/* attiny bloc auto lumineux8
   28/04/2024
   Dominique Hudry
   Simulation d'un BAL fictif pour réseau de train
   liens: http://ptitrain.cd1.free.fr/liens/faq/faq_balbid.htm
          https://forum.arduino.cc/index.php?topic=257939.0
          https://wokwi.com/projects/396413306686529537

               Brochage ATiny85

                =|1  U  8|= VCC
   Capteur -->3 =|2     7|= 2--> LedVerte
   PotPin -->A2 =|3     6|= 1--> LedJaune
            GND =|4     5|= 0--> LedRouge
*/

#include "simpleBouton.h"

const byte LedVerte = 2;
const byte LedJaune = 1;
const byte LedRouge = 0;
const byte PotPin = A2;  // Broche pour le potentiomètre
const unsigned int TemporisationMin = 10000;  // Temporisation minimale en ms
const unsigned int TemporisationMax = 40000;  // Temporisation maximale en ms
unsigned long debut_tempo;

simpleBouton Capteur(3);

void setup() {
  pinMode(LedVerte, OUTPUT);    // Leds en sortie
  pinMode(LedJaune, OUTPUT);
  pinMode(LedRouge, OUTPUT);
  digitalWrite(LedVerte, HIGH); // seule la Led verte est allumée
  delay(1000);
} // fin setup

void loop() {
  unsigned int temporisation = map(analogRead(PotPin), 0, 1023, TemporisationMin, TemporisationMax);
  unsigned int tempo1 = temporisation;
  unsigned int tempo2 = temporisation * 2;
  Capteur.actualiser();
  if (Capteur.vientDEtreRelache()) {
    digitalWrite(LedVerte, LOW);
    digitalWrite(LedJaune, LOW);
    digitalWrite(LedRouge, HIGH);  // alors Led rouge allumée
    debut_tempo = millis();        // et on initialise debut_tempo
  } 
  if (digitalRead(LedRouge) || digitalRead(LedJaune)) { // si la Led rouge ou jaune est allumée
    if (millis() - debut_tempo >= tempo1) { // et si l'écart est > ou = à la tempo1
      digitalWrite(LedRouge, LOW);          // alors la Led rouge s'éteint
      digitalWrite(LedJaune, HIGH);         // et la Led jaune s'allume
    }

    if (millis() - debut_tempo >= tempo2) { // et si l'écart est > ou = à la tempo2
      digitalWrite(LedJaune, LOW);          // alors la Led jaune s'éteint
      digitalWrite(LedVerte, HIGH);         // et la Led verte s'allume
    }
  }
} // fin loop
ATTINY8520PU