🛠 Lire un bouton poussoir avec anti-rebond
Objectifs
Apprendre la lecture d'entrée numérique sur ESP32-S2 : activer une résistance de pull-up interne, lire l'état d'un bouton et filtrer les rebonds mécaniques par une temporisation logicielle.
Matériel
- Carte ESP32-S2
- 1 bouton poussoir
- 1 LED avec résistance de 330 Ω (facultatif, pour l'indicateur)
- Câbles Dupont
Code complet
// Bouton avec anti-rebond logiciel sur ESP32-S2
const uint8_t BTN_PIN = 4;
const uint8_t LED_PIN = 2;
const unsigned long DEBOUNCE_MS = 50;
bool etatLed = false;
bool dernierEtatBtn = HIGH;
unsigned long dernierBordMs = 0;
void setup {
pinMode(BTN_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
Serial.begin(115200);
}
void loop {
bool etatBtn = digitalRead(BTN_PIN);
unsigned long maintenant = millis;
if (etatBtn != dernierEtatBtn &&
maintenant - dernierBordMs >= DEBOUNCE_MS) {
dernierBordMs = maintenant;
dernierEtatBtn = etatBtn;
if (etatBtn == LOW) { // bouton enfoncé (logique inversée)
etatLed = !etatLed;
digitalWrite(LED_PIN, etatLed ? HIGH : LOW);
Serial.println(etatLed ? "LED ON" : "LED OFF");
}
}
}
Vérification attendue
Chaque appui sur le bouton bascule la LED et affiche « LED ON » ou « LED OFF » sur le moniteur série à 115200 bauds. Un appui franc ne produit qu'un seul changement d'état.
Erreurs fréquentes
- Oubli de
INPUT_PULLUP: l'entrée flotte et l'état change sans bouton. - Logique inversée mal comprise : avec une pull-up, le GPIO lit LOW quand le bouton est enfoncé.
- Anti-rebond trop court : quelques appuis comptent double ; augmentez
DEBOUNCE_MS. - Bouton câblé sur une broche occupée par la flash ou la PSRAM : consultez le schéma de la carte avant de choisir la broche.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino