53 lines
1.8 KiB
C++
53 lines
1.8 KiB
C++
#include <ESP8266WiFi.h>
|
|
|
|
// 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;
|
|
} |