const int buttonPin = 2;
const int ledPin = 4;
int ledState = HIGH; // lưu trữ trạng thái hiện tại của đèn LED (bật hoặc tắt).
int buttonState; //lưu trữ trạng thái hiện tại của nút nhấn.
int lastButtonState = LOW; //ưu trữ trạng thái trước đó của nút nhấn.
unsigned long lastDebounceTime = 0; //lưu trữ thời điểm cuối cùng kiểm tra trạng thái của nút nhấn.
unsigned long debounceDelay = 50; //Thời gian chờ giữa các lần kiểm tra
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState);
}
void loop() {
int reading = digitalRead(buttonPin);
if(reading != lastButtonState) {
lastDebounceTime = millis();
}
//kiểm tra xem đã đến thời điểm để kiểm tra lại nút nhấn chưa
if((millis() - lastDebounceTime) > debounceDelay) {
if(reading != buttonState) {
buttonState = reading;
if(buttonState == HIGH) {
ledState = !ledState;
}
}
}
digitalWrite(ledPin,ledState); //đặt trạng thái mới cho đèn LED
lastButtonState = reading; //cập nhật trạng thái trước đó của nút nhấn
}