IoT

Corso base di Arduino: pulsanti e bottoni

banner prova1

Oltre alle porte di output, esaminate nella quarta puntata del corso base su Arduino, la scheda può gestire anche le porte di input. Si tratta di normali pin che possono essere predisposti alla ricezione di un segnale (digitale o analogico che sia). In questa puntata ci occuperemo solo dei segnali digitali (+5V oppure 0V).

Solitamente, a queste tipologie di porte vanno collegati i sensori, che forniscono un segnale, in dipendenza a un particolare episodio che avviene esternamente alla scheda. Contempliamo tra essi i pulsanti, gli interruttori, le fotoresistenze, i sensori di temperatura, ecc.

Gli esempi che seguono sono di una semplicità straordinaria ma sufficienti a far comprendere, fin da subito, il concetto ai principianti, che si accingono a iniziare la programmazione di Arduino.

Primo esempio: Luci scala di un palazzo

Al solito, prima d’intraprendere qualsiasi azione di programmazione, occorre impostare un algoritmo che regoli la procedura prescelta. Analizziamo, dunque, cosa succede quando si gestisce un impianto di luci per una scala di un condominio, tramite passi numerati:

     1.  In stato di riposo:

a)      Tutte le luci d’illuminazione della scala sono spente

b)     Resta accesa solo una piccola luce di cortesia posta sul pulsante

2.  Se si preme il pulsante

a)     Si accendono tutte le lampade del vano scala (il contatore comincia a girare)

b)     Si spengono le luci di cortesia

c)     Lo stato perdura per 30 secondi (o altra temporizzazione utile)

     3.  Ritorno al punto 1

L’algoritmo è abbastanza semplice, occorre sempre pensare in funzione a tutte le casistiche che possono accadere. L’esempio è stato preparato per gestire solo due piani, ma il ragionamento è lo stesso per qualunque numero di luci. Nella funzione setup vengono configurati i pin di uscita (1, 2, 3 e 4) e il pin d’ingresso per il pulsante (7). Quindi, è attuato subito lo stato del riposo (luci spente e lucette accese). La clausola condizionale if è processata ogni 10 ms. Se il valore booleano proveniente dalla lettura della porta d’ingresso è "vero", si accendono le luci della scala e si spengono quelle di cortesia, il tutto per 30 secondi. Dopo il ripristino della situazione, l’intero processo si ripete all’infinito. Si consiglia, soprattutto ai principianti, di studiare a fondo sia il listato che lo schema del cablaggio elettrico.

L’ingresso 7 è tenuto "basso" dalla resistenza di pull-down da 10k. Una pressione del pulsante causa il passaggio di corrente che commuta immediatamente ad alto il livello della stessa porta. Il firmware fa il resto.

figura 1 cablaggio luci scala

figura 1 cablaggio luci scala

 

figura 2 listato luci scala
figura 2 listato luci scala

 

Secondo esempio: pulsanti contemporanei

Il miglior modo per imparare la programmazione con Arduino è quello di provare diversi esempi, anche sbagliando. Il prossimo esempio è interessante: si hanno due pulsanti e un diodo LED. Quest’ultimo si accende se, e solo se, si premono contemporaneamente i due pulsanti in dotazione. Il LED utilizzato, questa volta, si trova direttamente su Arduino, assieme alla sua resistenza di limitazione. È connesso alla porta 13. Non è necessario, quindi, collegarne un altro.

figura 3 cablaggio doppio pulsante
figura 3 cablaggio doppio pulsante

Si noti che la condizione if processa e controlla due valori logici (booleani) contemporaneamente, grazie all’operatore logico "&&" (AND). Pertanto, nel controllo, si potrebbe evitare l’uso dell’operatore di uguaglianza e organizzare l’istruzione nel seguente modo:

if (pressione1 && pressione2)

Il diodo LED si accenderà quando entrambi i pulsanti saranno premuti. Gli utilizzi dell’esempio sono molteplici, dal settore automobilistico a quello casalingo.

figura 4 listato doppio pulsante
figura 4 listato doppio pulsante
Tom's Consiglia

Per chi inizia ora e voglia dotarsi di tutto l'occorrente, Arduino Uno si trova facilmente a un prezzo abbordabile.