Loading...
Vietnam Geography App
Loading...
Vietnam Geography App
Trải nghiệm điều khiển thiết bị bằng nút nhấn, biến trở và cảm biến! Bạn sẽ học cách tương tác với thế giới thực, tạo hiệu ứng thú vị và xây dựng hệ thống thông minh chỉ với vài dòng code.
Video hướng dẫn chi tiết
Chỉ có 2 trạng thái: HIGH (1) hoặc LOW (0)
digitalRead()
Có thể có nhiều mức giá trị từ 0-1023
analogRead()
Điện trở kéo lên để đảm bảo input ổn định khi không có tín hiệu
Kỹ thuật loại bỏ nhiễu khi nhấn button
Tạo tín hiệu analog từ digital bằng pulse width modulation
/*
Button và LED Control
Sử dụng button để điều khiển LED
*/
int buttonPin = 2;
int ledPin = 13;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Sử dụng pull-up resistor
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == LOW) { // Button được nhấn (pull-up = LOW khi nhấn)
digitalWrite(ledPin, HIGH);
Serial.println("Button pressed - LED ON");
} else {
digitalWrite(ledPin, LOW);
Serial.println("Button released - LED OFF");
}
delay(50); // Debouncing delay
}
INPUT_PULLUP
: Kích hoạt điện trở kéo lên nội bộdigitalRead()
: Đọc trạng thái HIGH/LOWLOW
: Button được nhấn (do pull-up)delay(50)
: Debouncing để tránh nhiễuTạo counter đếm số lần nhấn button và hiển thị trên Serial Monitor
int buttonPin = 2;
int counter = 0;
int lastButtonState = HIGH;
int currentButtonState = HIGH;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
Serial.println("Button Counter Started");
}
void loop() {
currentButtonState = digitalRead(buttonPin);
if (lastButtonState == HIGH && currentButtonState == LOW) {
counter++;
Serial.print("Button pressed ");
Serial.print(counter);
Serial.println(" times");
delay(50); // Debouncing
}
lastButtonState = currentButtonState;
}
Serial Monitor hiển thị số lần nhấn button
Sử dụng potentiometer để điều chỉnh độ sáng LED
int potPin = A0;
int ledPin = 9; // PWM pin
int potValue = 0;
int ledValue = 0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
potValue = analogRead(potPin); // Đọc giá trị 0-1023
ledValue = map(potValue, 0, 1023, 0, 255); // Chuyển đổi sang 0-255
analogWrite(ledPin, ledValue); // PWM output
Serial.print("Pot: ");
Serial.print(potValue);
Serial.print(" -> LED: ");
Serial.println(ledValue);
delay(10);
}
LED sáng/tối theo vị trí potentiometer