#include // Définir les pins const int buttonPin = D1; // Pin du bouton const int ledPin = LED_BUILTIN; // Pin de la LED intégrée (D4 sur la plupart des cartes ESP8266) // Variables pour suivre l'état du bouton et de la LED bool ledState = LOW; // État initial de la LED bool lastButtonState = HIGH; // Dernier état du bouton unsigned long lastDebounceTime = 0; // Dernière fois que l'état du bouton a changé unsigned long debounceDelay = 50; // Temps de debounce pour éviter les rebonds du bouton void setup() { // Initialiser la communication série Serial.begin(115200); // Initialiser les pins pinMode(buttonPin, INPUT_PULLUP); // Pin du bouton en entrée avec pull-up interne pinMode(ledPin, OUTPUT); // Pin de la LED en sortie // Assurer que la LED est éteinte au démarrage digitalWrite(ledPin, LOW); } void loop() { // Lire l'état du bouton int buttonState = digitalRead(buttonPin); // Vérifier si l'état du bouton a changé depuis la dernière lecture if (buttonState != lastButtonState) { lastDebounceTime = millis(); // Réinitialiser le temps de debounce } // Si le bouton a été maintenu dans le nouvel état assez longtemps if ((millis() - lastDebounceTime) > debounceDelay) { // Si le bouton est maintenant pressé (état bas car pin est en pull-up) if (buttonState == LOW && lastButtonState == HIGH) { // Inverser l'état de la LED ledState = !ledState; digitalWrite(ledPin, ledState); // Mettre à jour l'état de la LED // Afficher l'état de la LED sur le moniteur série if (ledState == HIGH) { Serial.println("LED allumée"); } else { Serial.println("LED éteinte"); } } } // Sauvegarder l'état du bouton pour la prochaine lecture lastButtonState = buttonState; }