unsigned long feuxRougeTempo = 4000; // Temps d'allumage du feux rouge
unsigned long feuxRougeMillis = 0; // Temps d'allumage du feux rouge chrono
const int entree_speed = 2;
const int feuxRougePin = 10;
const int feuxVertPin = 8;
void setup()
{
Serial.begin(115200);
pinMode(feuxRougePin, OUTPUT);
pinMode(entree_speed, INPUT_PULLUP);
digitalWrite(feuxRougePin, LOW);
digitalWrite(feuxVertPin, HIGH); // On allume le feu vert
feuxRougeMillis = 0; // On démarre le chrono
}
void loop()
{
if (feuxRougeMillis == 0 && digitalRead(entree_speed) == LOW)
feuxRougeMillis = millis();
// Test si chrono feux rouge est démarré et est arrivé à échéhenc
if (feuxRougeMillis != 0 && (millis() - feuxRougeMillis >= feuxRougeTempo))
{
digitalWrite(feuxVertPin, LOW); // On éteind le feu vert
digitalWrite(feuxRougePin, HIGH); // On allume le feu rouge
feuxRougeMillis = 0; // Arrêt du chrono
}
}