// Pins des relais
#define RELAY1_PIN 4
#define RELAY2_PIN 5
#define RELAY3_PIN 6
#define RELAY4_PIN 7
#define RELAY5_PIN 8
// Pin du bouton
#define BUTTON_PIN 2
// Pin du potentiomètre
#define POT_PIN A0
void setup() {
// Configuration des pins des relais en sortie
pinMode(RELAY1_PIN, OUTPUT);
pinMode(RELAY2_PIN, OUTPUT);
pinMode(RELAY3_PIN, OUTPUT);
pinMode(RELAY4_PIN, OUTPUT);
pinMode(RELAY5_PIN, OUTPUT);
// Assurer que tous les relais sont initialement désactivés
digitalWrite(RELAY1_PIN, LOW);
digitalWrite(RELAY2_PIN, LOW);
digitalWrite(RELAY3_PIN, LOW);
digitalWrite(RELAY4_PIN, LOW);
digitalWrite(RELAY5_PIN, LOW);
// Configuration de la pin du bouton en entrée avec résistance de pull-up interne
pinMode(BUTTON_PIN, INPUT_PULLUP);
// Configuration de la pin du potentiomètre en entrée (facultatif, car A0 est par défaut une entrée)
pinMode(POT_PIN, INPUT);
}
void loop() {
// Lire l'état du bouton (LOW signifie que le bouton est pressé)
bool buttonPressed = digitalRead(BUTTON_PIN) == LOW;
if (buttonPressed) {
// Animer les relais en cascade tant que le bouton est pressé
while (digitalRead(BUTTON_PIN) == LOW) {
// Lire la valeur du potentiomètre (0 à 1023)
int potValue = analogRead(POT_PIN);
// Mapper la valeur du potentiomètre à une plage de délais (par exemple, de 50 ms à 1000 ms)
int cascadeDelay = map(potValue, 0, 1023, 50, 1000);
// Activer les relais un par un
digitalWrite(RELAY1_PIN, HIGH);
delay(cascadeDelay);
// Vérifier si le bouton est relâché
if (digitalRead(BUTTON_PIN) == HIGH) break;
digitalWrite(RELAY1_PIN, LOW);
digitalWrite(RELAY2_PIN, HIGH);
delay(cascadeDelay);
// Vérifier si le bouton est relâché
if (digitalRead(BUTTON_PIN) == HIGH) break;
digitalWrite(RELAY2_PIN, LOW);
digitalWrite(RELAY3_PIN, HIGH);
delay(cascadeDelay);
// Vérifier si le bouton est relâché
if (digitalRead(BUTTON_PIN) == HIGH) break;
digitalWrite(RELAY3_PIN, LOW);
digitalWrite(RELAY4_PIN, HIGH);
delay(cascadeDelay);
// Vérifier si le bouton est relâché
if (digitalRead(BUTTON_PIN) == HIGH) break;
digitalWrite(RELAY4_PIN, LOW);
digitalWrite(RELAY5_PIN, HIGH);
delay(cascadeDelay);
// Vérifier si le bouton est relâché
if (digitalRead(BUTTON_PIN) == HIGH) break;
digitalWrite(RELAY5_PIN, LOW);
}
} else {
// Désactiver tous les relais
digitalWrite(RELAY1_PIN, LOW);
digitalWrite(RELAY2_PIN, LOW);
digitalWrite(RELAY3_PIN, LOW);
digitalWrite(RELAY4_PIN, LOW);
digitalWrite(RELAY5_PIN, LOW);
}
}