#define LED_PIN 2
#define BUTTON_PIN 4
bool ledState = false; // Trạng thái hiện tại của LED
bool buttonState = false; // Trạng thái hiện tại của nút bấm
bool lastButtonState = false; // Trạng thái trước đó của nút bấm
void setup() {
// Khởi tạo chân LED là OUTPUT
pinMode(LED_PIN, OUTPUT);
// Khởi tạo chân nút bấm là INPUT_PULLUP
pinMode(BUTTON_PIN, INPUT_PULLUP);
// Tắt LED ban đầu
digitalWrite(LED_PIN, LOW);
}
void loop() {
// Đọc trạng thái hiện tại của nút bấm
buttonState = digitalRead(BUTTON_PIN);
// Kiểm tra nếu trạng thái nút bấm thay đổi từ chưa nhấn (HIGH) sang nhấn (LOW)
if (buttonState == LOW && lastButtonState == HIGH) {
// Đảo trạng thái của LED
ledState = !ledState;
// Bật/tắt LED dựa trên trạng thái mới
digitalWrite(LED_PIN, ledState ? HIGH : LOW);
// Chờ debounce để tránh lỗi nhấn nhiều lần
delay(50);
}
// Lưu trạng thái nút bấm hiện tại cho lần kiểm tra sau
lastButtonState = buttonState;
}