#105Principiante
Controllo LED ESP32 con pulsante (a levetta)
Ogni volta che si preme il pulsante, lo stato del LED cambia: se è acceso si spegne, se è spento si accende. Classico schema a levetta. Con il debounce puliamo il rumore meccanico del pulsante per garantire una singola commutazione con una sola pressione.
4.6(39)
56 completato

Ogni volta che si preme il pulsante, lo stato del LED cambia: se è acceso si spegne, se è spento si accende. Classico schema a levetta. Con il debounce puliamo il rumore meccanico del pulsante per garantire una singola commutazione con una sola pressione.
Video
Schema circuito

Codice sorgente
1const int LED_PIN = 5;
2const int BUTTON_PIN = 4;
3
4bool ledState = false;
5bool lastButton = HIGH;
6unsigned long lastPress = 0;
7const unsigned long DEBOUNCE = 50;
8
9void setup() {
10 pinMode(LED_PIN, OUTPUT);
11 pinMode(BUTTON_PIN, INPUT_PULLUP);
12}
13
14void loop() {
15 bool buttonState = digitalRead(BUTTON_PIN);
16
17 if (buttonState == LOW && lastButton == HIGH && (millis() - lastPress > DEBOUNCE)) {
18 ledState = !ledState;
19 digitalWrite(LED_PIN, ledState);
20 lastPress = millis();
21 }
22 lastButton = buttonState;
23}