🛠 Lire un bouton sur GPIO4 avec l'ESP8266-ESP-12E

ESP8266 (module ESP-12E) · debutant · Schéma : IMG-esp8266-esp-12e-debutant-2-esp8266-bouton-gpio4.svg — Module ESP8266-ESP-12E, bouton poussoir entre GPIO4 et la masse, résistance de pull-up interne activée, console UART0 sur GPIO1/GPIO3.

Objectifs

Apprendre à lire une entrée numérique sur l'ESP8266-ESP-12E en utilisant un bouton poussoir sur GPIO4 (broche D2 des cartes NodeMCU). GPIO4 fait partie des broches « sûres » du module, avec GPIO5 : elles n'ont aucune contrainte au démarrage, contrairement à GPIO0, GPIO2 et GPIO15. On active la résistance de pull-up interne (environ 45 kΩ) avec INPUT_PULLUP, ce qui évite d'ajouter une résistance externe : le bouton relie la broche à la masse quand il est pressé, l'entrée lit alors LOW. On affiche les appuis sur la console série UART0 à 115200 bauds, et on découvre le rôle de yield pour nourrir le watchdog logiciel.

Matériel

Code complet

// Bouton sur GPIO4 (D2), LED sur GPIO2 (D4, active-LOW sur la plupart des modules)
const uint8_t BTN = 4;
const uint8_t LED = 2;

void setup {
  pinMode(BTN, INPUT_PULLUP);   // pull-up interne ~45 kΩ, pas de résistance externe
  pinMode(LED, OUTPUT);
  Serial.begin(115200);         // console sur UART0 : GPIO1 TX / GPIO3 RX
  Serial.println("Pret : appuyez sur le bouton GPIO4");
}

void loop {
  static uint8_t last = HIGH;
  uint8_t now = digitalRead(BTN);
  if (now != last) {                 // anti-rebond logiciel simple
    delay(30);
    now = digitalRead(BTN);
    if (now != last) {
      last = now;
      Serial.println(last == LOW ? "Bouton APPUYE" : "Bouton lache");
    }
  }
  digitalWrite(LED, last);           // LED embarquée s'allume quand on appuie (active-LOW)
  yield;                           // nourrit le watchdog logiciel (WDT)
}

Vérification attendue

Ouvre le moniteur série à 115200 bauds puis réinitialise le module : le message d'accueil s'affiche. À chaque appui, la console affiche « Bouton APPUYE » et la LED s'allume ; à chaque relâchement, « Bouton lache » et la LED s'éteint. Aucun reset intempestif ne doit survenir : si c'était le cas, soupçonne une alimentation trop faible plutôt que le code.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels