bouton-led.ino
Un bouton sur D3 avec résistance interne, compté proprement grâce au filtre de 40 ms. Sur NodeMCU, GPIO0 est aussi la broche de boot : un appui maintenu à la remise sous tension ferait entrer en mode flash.
Matériel requis
Un module ESP-12E (ESP8266EX, Wi-Fi 2,4 GHz) monté sur une carte NodeMCU / Wemos D1 mini, alimentée par micro-USB. 1 bouton poussoir (D3 vers GND).
Branchement
Bouton entre D3 et GND ; pull-up interne activée. Alternative sans risque boot : D1/D2 (GPIO4/5). Évitez GPIO15 (TX) et GPIO16.
Fonctionnement
Le niveau est échantillonné en continu ; un front n'est validé qu'après 40 ms de stabilité. INPUT_PULLUP inverse la logique : appui = LOW, d'où le test == LOW. Dans l'Arduino IDE, installez le paquet « esp8266 », choisissez « NodeMCU 1.0 (ESP-12E Module) » puis Téléverser (GPIO0 à LOW si le flash échoue). L'ADC A0 lit 0-1 V (diviseur NodeMCU : 0-3,3 V).
Pour aller plus loin
Deux boutons pour un menu (haut/bas/OK), ou réveil en deep sleep sur cette même broche.
bouton-led.ino
// Bouton sur D3 (GPIO0, vers GND) + compteur anti-rebond 40 ms.
const int BOUTON = 0; // D3 — attention : GPIO0 = broche de boot !
const int LED = 2; // D4
const unsigned long ANTI_REBOND = 40;
bool dernier = HIGH, stable = HIGH;
unsigned long bord = 0;
int compteur = 0;
void setup() {
pinMode(BOUTON, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(115200);
}
void loop() {
bool lu = digitalRead(BOUTON);
unsigned long t = millis();
if (lu != dernier) bord = t;
if (t - bord >= ANTI_REBOND && lu != stable) {
stable = lu;
if (stable == LOW) {
compteur++;
digitalWrite(LED, LOW); // LED activee (actif-bas)
Serial.printf("Appui n°%d\n", compteur);
} else {
digitalWrite(LED, HIGH);
}
}
dernier = lu;
}