// Définition des pins
const int buttonPin = 2; // Le pin où le bouton est connecté
const int relayPin = 12; // Le pin où le relais est connecté
// Variables pour stocker l'état du bouton et le nombre d'appuis
int buttonState = 0; // variable pour lire l'état actuel du bouton
int lastButtonState = LOW; // variable pour lire l'état précédent du bouton
unsigned long lastDebounceTime = 0; // le dernier moment où le bouton a changé d'état
unsigned long debounceDelay = 50; // le temps de rebond nécessaire avant de considérer que le bouton a changé d'état, en millisecondes
int pressCount = 0; // compte le nombre d'appuis sur le bouton
void setup() {
pinMode(relayPin, OUTPUT); // Initialise le pin du relais comme sortie
pinMode(buttonPin, INPUT); // Initialise le pin du bouton comme entrée
digitalWrite(relayPin, LOW); // Assurez-vous que la LED est éteinte au démarrage
}
void loop() {
int reading = digitalRead(buttonPin);
// si l'état du bouton a changé, en raison du rebond ou de l'appui
if (reading != lastButtonState) {
// réinitialiser le délai de rebond
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// si le bouton est dans un nouvel état
if (reading != buttonState) {
buttonState = reading;
// si le bouton a été pressé
if (buttonState == HIGH) {
pressCount++;
if (pressCount == 1) {
// Allume la LED pendant 3 secondes lors du premier appui
digitalWrite(relayPin, HIGH);
delay(3000);
digitalWrite(relayPin, LOW);
} else if (pressCount == 2) {
// Allume la LED pendant 1 seconde lors du second appui
digitalWrite(relayPin, HIGH);
delay(500);
digitalWrite(relayPin, LOW);
// Réinitialiser le compte d'appuis pour de futurs cycles
pressCount = 0;
}
}
}
}
// Mise à jour de l'état du bouton
lastButtonState = reading;
}