Tất cả dự án mẫu
Cơ bảnESP32 DevKitC V4Nút nhấnLEDChống dội

Nút nhấn đảo trạng thái LED

Mỗi lần nhấn nút, LED đổi trạng thái. Dùng điện trở kéo lên bên trong (INPUT_PULLUP) và chống dội bằng millis().

Linh kiện

  • ESP32 DevKitC V4
  • Điện trở
  • LED
  • Nút nhấn

Thư viện

Không cần thư viện ngoài.

Thử ngay khi mô phỏng chạy

  • Nhấn giữ nút trên mạch khi mô phỏng đang chạy.
  • Bật thuộc tính “dội phím” của nút và xem code chống dội có tác dụng.

main.cpp

// Nút nhấn trên GPIO4 (nối xuống GND) đảo trạng thái LED trên GPIO2const int LED_PIN = 2;const int BUTTON_PIN = 4;const unsigned long DEBOUNCE_MS = 30; bool ledOn = false;bool lastReading = HIGH;bool stableState = HIGH;unsigned long lastChange = 0; void setup() {  Serial.begin(115200);  pinMode(LED_PIN, OUTPUT);  pinMode(BUTTON_PIN, INPUT_PULLUP);  Serial.println("San sang: nhan nut de doi LED");} void loop() {  bool reading = digitalRead(BUTTON_PIN);  if (reading != lastReading) {    lastReading = reading;    lastChange = millis();  }  if (millis() - lastChange > DEBOUNCE_MS && reading != stableState) {    stableState = reading;    if (stableState == LOW) {      ledOn = !ledOn;      digitalWrite(LED_PIN, ledOn ? HIGH : LOW);      Serial.println(ledOn ? "LED: ON" : "LED: OFF");    }  }}