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);
    }
  //}
}