const byte ILS1 = 12;
const byte ILS2 = 11;
const byte ILS3 = 10;
const byte FeuVert = 9;
const byte FeuRouge = 8;
const byte FeuOrange = 7;
enum Etat { Vert, Rouge, Orange };
Etat etatActuel = Vert;
void setup() {
pinMode(ILS1, INPUT_PULLUP);
pinMode(ILS2, INPUT_PULLUP);
pinMode(ILS3, INPUT_PULLUP);
pinMode(FeuVert, OUTPUT);
pinMode(FeuRouge, OUTPUT);
pinMode(FeuOrange, OUTPUT);
}
void loop() {
bool ILS1_actif = !digitalRead(ILS1); // LOW = activé
bool ILS2_actif = !digitalRead(ILS2); // LOW = activé
bool ILS3_actif = !digitalRead(ILS3); // LOW = activé
// Logique de transition
if (etatActuel == Vert && ILS1_actif) {
etatActuel = Rouge;
delay(50); // Anti-rebond
}
else if (etatActuel == Rouge && ILS2_actif) {
etatActuel = Orange;
delay(50); // Anti-rebond
}
else if (etatActuel == Orange && ILS3_actif) {
etatActuel = Vert;
delay(50); // Anti-rebond
}
// Gestion des feux
switch (etatActuel) {
case Vert:
digitalWrite(FeuVert, HIGH);
digitalWrite(FeuRouge, LOW);
digitalWrite(FeuOrange, LOW);
break;
case Rouge:
digitalWrite(FeuVert, LOW);
digitalWrite(FeuRouge, HIGH);
digitalWrite(FeuOrange, LOW);
break;
case Orange:
digitalWrite(FeuVert, LOW);
digitalWrite(FeuRouge, LOW);
digitalWrite(FeuOrange, HIGH);
break;
}
}