Introduction: ARDUINO – TIMER E SVEGLIA

Oggi, sempre utilizzando lo starter kit di arduino ho realizzato un timer che suona una volta esaurito il tempo, programmabile.

Per questo esperimento ho utilizzato:

– 6 LED Rossi, 1 LED Blu, 1 LED giallo, 1 LED Verde.

– 3 interruttori a pressione

– 1 piezo

– ovviamente cavetteria e resistenze varie

– la scheda Arduino UNO

– la breadboard che permette di collegare tutti i componenti senza saldarli (così che siano riutilizzabili)

Il dispositivo è programmabile, ogni volta che lo si avvia è possibile scegliere quanti minuti e quante ore impostare. I sei LED Rossi si accenderanno progressivamante per segnalare il procedere del tempo; rispettivamente a 1/6, 2/6, 3/6, 4/6, 5/6 e 6/6 del tempo impostato.

Una volta raggiunto il tempo, oltre ad accendersi il sesto LED, il piezo suona per richiamare l’attenzione.

E’ possibile programmarlo per suonare una qualsiasi melodia, ma ai fini dell’esperimento è stato programmato per suonare una sola nota (DO) prolungata.

Durante la sequenza di avvio è possibile impostare il numero di ore e di minuti del timer premendo i pulsanti posti accando ai LED blu(ore) e giallo (minuti). Il pulsante acando al LED verde serve per dare la conferma e avviare il timer.

La scheda arduino UNO è dotata di Dodici uscite digitali:

– 1 collegata al piezo

– 9 collegate ai LED

Di conseguenza rimanevano disponibili solamente 2 porte, insufficienti per gestire i tre pulsanti, ho quindi utilizzato una tecnica, chgiamata rete di resistenze a scala, che permette di leggere più pulsanti utilizzando un unico ingresso analogico anzichè un ingresso digitale per ogni pulsante.

Come funziona: si collegano i pulsanti in parallelo ad un ingresso analogico, ogni pulsante è collegato all’alimentazione attraverso una diversa resistenza, il primo non ha alcuna resistenza, il secondo una resistenza da 229 Ohm, il terzo una resistenza da 10 Kilo Ohm (e così via se ci fossera più pulsanti). Questo fa sì che a seconda del pulsante che viene premuto viene inviata una diversa tensione all’ingresso analogico permettendo così di individuare il pulsante che è stato premuto. E’ possibile calcolare la tensione che riceve il pulsante analogico teoricamente semplicemente applicando la legge di Ohm, per i circuiti brevi va benissimo ma se il circuito si allunga potrebbe esserci dispersione e andrebbe presa in considerazione anche la resistenza dei mezzi di trasmissione. Quindi, mentre nel nostro caso ho semplicemente fatto due calcoli per trovare quali sarebbero stati i valori in ingresso se la situazione è più complessa (o se siete semplicemente un po’ pigri) potete anche testare i valori letti dall’ingresso analogico attraverso il monitor seriale(Serial.begin(9600) per avviare la connessione e Serial.println(keyVal) per stampare a schermo il valore della variabile dove immagazziniamo il valore letto) e scrivere il codice basandosi sui valori ricevuti.

Ogni volta che viene premuto il pulsante accanto al LED blu si aggiunge un ora e ogni volta che viene premuto il pulsante accanto al LED giallo un minuto. Se si dovesse premere il pulsante accanto al LED verde prima di aver impostato minuti e ore questo lampeggerà tre volte per indicarci un errore e riavierà l’impostazione del timer.

Un piccolo appunto sul codice, è possibile inizializzare le porte ed accendere i LED utilizzando una funzione FOR se questi sono collegati ad ingressi adiacenti, ma nel caso in futuro fosse necessario, per qualsiasi ragione, spostare i collegamenti o riutilizzare il codice per altri progetti andrebbe riscritto tutto, di conseguenza preferisco immagazzinare il numero di ogni ingresso in una costante e poi lavorare solo con la costante, in questo modo se in un futuro è necessario modificare i collegamenti sarà sufficiente assegnare alla costante il nuovo valore e non sarà necessario altro lavoro.

Il codice sorgente lo trovate qui