// Déclaration des broches des LEDs
const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // Les broches auxquelles les relais/LEDs sont connectés
const int numLeds = 8; // Nombre de LEDs
// Broches pour le potentiomètre et le bouton
const int potPin = A0;
const int buttonPin = 10;
// Variable pour stocker l'état du bouton
bool buttonState = LOW;
void setup() {
// Initialisation des broches en sortie pour les LEDs
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
}
// Initialisation des broches pour le potentiomètre et le bouton
pinMode(potPin, INPUT);
pinMode(buttonPin, INPUT_PULLUP); // Utilisation de la résistance de pull-up interne
}
void loop() {
// Lecture de l'état du bouton
buttonState = digitalRead(buttonPin);
// Si le bouton est maintenu pressé
if (buttonState == LOW) {
// Lecture de la valeur du potentiomètre
int potValue = analogRead(potPin);
// Conversion de la valeur du potentiomètre en temps de délai (50 à 1000 ms)
int delayTime = map(potValue, 0, 1023, 50, 1000);
// Séquence de défilement
for (int step = 0; step < numLeds; step++) {
for (int i = 0; i < numLeds; i++) {
// Les LEDs sont allumées dans une séquence de 4 allumées suivies de 4 éteintes
if ((i >= step && i < step + 4) || (i < step - numLeds + 4)) {
digitalWrite(ledPins[i], HIGH);
} else {
digitalWrite(ledPins[i], LOW);
}
}
// Attente avant de passer à la prochaine étape
delay(delayTime);
}
} else {
// Éteindre toutes les LEDs si le bouton n'est pas pressé
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
}
}