/*attiny monostable non redéclenchable tempo reglable
 Dominique Hudry
 01/11/2023
 lien: https://wokwi.com/projects/380191789113011201
 A la mise sous tension la led est éteinte
 si appui furtif ou maintenu du BP la led s'allume durant une temporisation réglable puis d'éteint
 le BP doit être relaché puis appuyé pour relancer une nouvelle temporisation
*/

const byte PinBP = 0; // branchement du BP
const byte Sortie =  1; // branchement de la Led
const byte PinPot = A2; // branchement curseur du potentiomètre  
bool etatBP;// BP relaché: HIGH  BP appuyé: LOW
bool precedentEtatBP = HIGH;
bool validation ;

void setup() {
  pinMode(Sortie, OUTPUT); 
  digitalWrite(Sortie, LOW);
  pinMode(PinBP, INPUT_PULLUP);
} // fin setup

void loop() {
  int temporisation = analogRead( PinPot);
  temporisation = map(temporisation, 0, 1023, 1, 10);
  temporisation = temporisation * 1000; //tempo comprise entre 1 et 10s

  etatBP = digitalRead (PinBP); // lecture de l'état du BP
  delay(50); // pour anti rebond
  if (etatBP == HIGH ) {
    validation = true;
  }
  if (etatBP == LOW && validation == true) { // conditions pour un déclenchement
    digitalWrite(Sortie, HIGH); // la Led s'allume durant la durée réglée
    delay(temporisation);
    digitalWrite(Sortie, LOW);
    validation = false; // les redéclenchements sont bloqués
  }
 } // fin loop
ATTINY8520PU