/* arduino action unique
   08/11/2023
   Dominique Hudry
   Action exécutée une seule fois dans la loop
   une led s'allume durant un certain temps puis s'éteint
   une autre led éteinte  s'allume apres la tempo
   lien: https://wokwi.com/projects/380860078911817729
*/

const byte PinLed = 13;
const byte PinLed2 = 3;
const int Temporisation = 5000;   // temporisation en milliseconde
bool ordreTempo = true;     // déclenche la temporisation
unsigned long tempsActuel;
unsigned long tempsPrecedent = 0;

void setup() {
  Serial.begin(9600);
  pinMode(PinLed, OUTPUT);
  pinMode(PinLed2, OUTPUT);
} // fin setup

void loop() {
  tempsActuel = millis();
  Serial.print("ordreTempo: ");
  Serial.println(ordreTempo);
  digitalWrite (PinLed, HIGH);// led allumée
  if (ordreTempo == true) { //on appelle la tempo
    digitalWrite(PinLed, HIGH);
    digitalWrite(PinLed2, LOW);
    temporisation();
  } // fin if
  else { //ordreTempo est à false alors attente
    digitalWrite(PinLed, LOW);
    digitalWrite(PinLed2, HIGH);
    tempsActuel = millis();
    tempsPrecedent = tempsActuel;//réactualisation
    Serial.print(" Attente ");
  } // fin else
} // fin loop

bool temporisation() {
  tempsActuel = millis();
  Serial.print("tempo en cours ");
  if ((ordreTempo == true) && (tempsActuel - tempsPrecedent > Temporisation)) {
    ordreTempo = false;
    Serial.print("ordreTempo: ");
    Serial.println(ordreTempo);
    Serial.println("*** Fin tempo ***");
    return (ordreTempo);
  } // fin if
} // fin temporisation