Arduino 2: LED controllato da pulsante

A. Costantini |  (la videolezione) L’obiettivo del post è quello di descrivere l’uso delle variabili intere e delle istruzioni “digitalRead” e “if…else” mediante due semplici programmi: quello in figura e quello nel post. In un articolo precedente si è realizzato un programma che permetteva di far lampeggiare un LED; con la nuova istruzione “digitalRead” è possibile  eseguire qualcosa di più evoluto: il lampeggio di un LED solamente se cambia una situazione esterna (ad esempio quando un pulsante è premuto), oppure lampeggio veloce del LED se cambia una situazione esterna (vedere lo sketch in basso). In sostanza, l’istruzione “digitalRead” è in grado di leggere il valore HIGH o LOW presente su uno specifico pin digitale della scheda, per controllare, ad esempio, la condizione “CHIUSO/APERTO” di un pulsante collegato a quel pin. L’istruzione “if…else”, invece, consente di prendere delle decisioni in funzione del fatto che una determinata condizione logica sia VERA o FALSA. Nel caso in cui la condizione sia VERA viene eseguito un primo blocco di istruzioni, nel caso in cui la condizione sia FALSA, viene eseguito un secondo blocco (vedi sketch in basso). La condizione logica é espressa tra parentesi tonde e segue la parola “if”. Nel linguaggio di programmazione C il simbolo “==” viene utilizzato per confrontare due entità (confronto logico) e restituisce TRUE o FALSE, mentre il simbolo “=” viene utilizzato per assegnare un valore ad una variabile. Si noti che bisogna in qualche modo ricordare lo stato del pulsante, per far ciò definiamo una variabile intera di nome x
prog1jpg

Come è possibile vedere nel programma, si usa la x per conservare il valore letto con digitalRead. Ricordiamo che i valori di qualsiasi variabile usata con Arduino vengono inseriti nella memoria RAM, valori che vengono persi una volta che si toglie l’alimentazione alla scheda Arduino. All’interno della codice di loop() viene assegnata alla variabile x il valore dell'input mediante l’istruzione digitalRead(11), ovvero l’istruzione legge il valore dell’input (pulsante) e restituisce un valore 0 oppure 1:  Nel primo sketch (quello nella figura), se il valore di x è 0 (LOW) vuol dire che il pulsante è premuto e allora, tramite il blocco di istruzioni che segue viene fatto lampeggiare LED; se il primo confronto risulta falso, vuol dire che il pulsante non è premuto e, come conseguenza,  nessuna istruzione viene eseguita e il LED rimane spento. Nel secondo sketch (quello sopra), se il valore di x è 0  (pulsante è premuto) allora, tramite il blocco di istruzioni che segue viene fatto lampeggiare velocemente il LED; se il primo confronto risulta falso, vuol dire che il pulsante non è premuto e verrà eseguita la parte di codice che fa lampeggiare lentamente il LED. 
Qui il Circuito Tinkercad:
- senza iscrizione é possibile simularlo, consultare la lista dei componenti, copiare il codice e scaricare il pdf dello schema;
- con l'iscrizione gratuita è possibile anche copiarlo e modificarlo a proprio piacimento.