/* attiny monostable redeclenchable
   Attiny85
   18/05/2020
   liens: https://forum.arduino.cc/index.php?topic=257939.0
          https://wokwi.com/projects/396243518885227521
   tout appui avant la fin de la tempo la relance

           Brochage ATiny85

           5 =|1  U  8|= VCC
           3 =|2     7|= 2
    Led <--4 =|3     6|= 1
         GND =|4     5|= 0<-- BP--GND

*/

// constantes
const byte Led = 4;
const byte BP = 0;

// variables
unsigned long tempo = 5000; //valeur en ms à adapter selon besoin
unsigned long debut_tempo;
bool dernier_appui = HIGH;


void setup() {
  pinMode(Led, OUTPUT);              // Led en sortie
  pinMode(BP, INPUT_PULLUP);         // BP en entrée avec pullup
}

void loop() {
  byte appui = digitalRead(BP);      // lecture de l'état du BP
  if (!appui) {                      // si appui = 0
    if (appui != dernier_appui) {     // et si différent de dernier appui
      digitalWrite(Led, HIGH);       // alors Led allumée
      debut_tempo = millis();        // et on initialise debut_tempo
    }
  }
  dernier_appui = appui;             // mémorisation de l'appui, dernier_appui = 0
  if (digitalRead(Led)) {             // si la Led est allumée
    if (millis() - debut_tempo >= tempo) { // et si l'écart est > ou = à la tempo
      digitalWrite(Led, LOW);        // alors la Led s'éteint
    }
  }
}
ATTINY8520PU