Files
blindtest/ESP8266/test/testBouton.cpp
2024-07-29 16:00:55 +02:00

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;
}