/* UD5.LAB7A - Monostabile */
/*============================== CONFIGURAZIONI ==============================*/
#define PIN_RED_BTN 4 //PIN utilizzati su Arduino per collegare
#define PIN_RED_LED 2 //"wokwi-pushbutton" e "wokwi-led"
#define TIMER 5000 //Durata del tempo di accensione del LED in
//millisecond
/*============================================================================*/
/*============================ VARIABILI GLOBALI =============================*/
unsigned long timerStart = 0; //Dichiaro e inizializzo una variabile utile
//a misurare la durata dell'accensione del
//"wokwi-led"
/*============================================================================*/
/*=========================== FUNZIONI PRINCIPALI ============================*/
void setup() {
pinMode(PIN_RED_BTN,INPUT_PULLUP); //PIN_BTN1 accetta segnali in ingresso e la
//sua resistenza di pullup è attiva
pinMode(PIN_RED_LED,OUTPUT); //PIN_LED1 emette segnali in uscita
}
void loop() {
int btn1 = !digitalRead(PIN_RED_BTN); //Con resistenza di pullup attiva si ha
//PIN_BTN1 normalmente HIGH ("1 logico")
//Si desidera che "wokwi-pushbutton" re-
//stituisca normalmente uno "0 logico" e
//alla sua pressione corrisponda "1 lo-
//gico". Pertanto, si sfrutta la varia-
//bile btn1 inizializzandola con valore
//negato rispetto a quanto letto su
//PIN_BTN1.
if(btn1) { //Se la variabile btn1 è vera ("1 logi-
digitalWrite(PIN_RED_LED,HIGH); //co"), PIN_LED1 viene portato su HIGH e
//il "wokwi-led" si accende.
timerStart = millis(); //Sfruttando la funzione millis(), si
//assegna alla variabile timerStart il
//valore dell'istante temporale in cui
//viene rilevata la pressione di "wokwi-
//pushbutton".
}
if(millis() - timerStart > TIMER) { //Se la differenza tra il tempo di ac-
digitalWrite(PIN_RED_LED,LOW); //censione di Arduino e il valore della
} //variabile timerStart è maggiore di
//TIMER, PIN_LED1 viene portato su LOW e
//il "wokwi_led" si spegne.
delay(30); //Ritardo introdotto per evitare false
//pressioni di "wokwi-pushbutton"
//(debounce)
}
/*============================================================================*/