const byte LedRemise = 4;
const byte LedArc = 8;
const byte Capteur = 10;
const int Interval = 300;
const int RetardDetection = 5000;
int etatLedArc = LOW;
unsigned long previousMillis = 0;
unsigned long debutRetardMillis = 0;
bool isRetardValid = false;
void setup() {
pinMode(LedRemise, OUTPUT);
pinMode(LedArc, OUTPUT);
pinMode(Capteur, INPUT_PULLUP);
}
void loop() {
bool currentCapteurState = digitalRead(Capteur);
if (currentCapteurState == LOW) {
digitalWrite(LedRemise, LOW);
digitalWrite(LedArc, LOW);
isRetardValid = false; // Désactive le retard lorsque le capteur est à LOW
}
else {
digitalWrite(LedRemise, HIGH);
unsigned long currentMillis = millis();
// Vérifie si le retard a expiré
if (!isRetardValid && (currentMillis - debutRetardMillis >= RetardDetection)) {
isRetardValid = true; // Active le retard lorsque le temps spécifié est écoulé
debutRetardMillis = currentMillis; // Réinitialise le temps de début du retard
}
// Exécute blinkLedArc() à chaque période Interval après le retard
if (isRetardValid) {
blinkLedArc(currentMillis);
}
}
}
void blinkLedArc(unsigned long currentMillis) {
// if (currentMillis - debutRetardMillis >= RetardDetection) {
// Le retard a expiré, donc on peut clignoter LedArc
if (currentMillis - previousMillis >= Interval) {
previousMillis = currentMillis;
etatLedArc = !etatLedArc; // Inversion logique
digitalWrite(LedArc, etatLedArc);
}
//}
}