/*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