Corso base di Arduino: tastiere a matrice

Le tastiere a matrice sono dei dispositivi d'input molto utili. Con solo sette connessioni si può realizzare un sistema d'immissione dati a dodici tasti. Vediamo come effettuare i collegamenti su Arduino e come realizzare i relativi programmi.

Avatar di Elettronica Open Source

a cura di Elettronica Open Source

banner prova1

Realizzare un sistema d'inserimento dati, tramite una tastiera a matrice, è un'operazione assai semplice, dal momento che occorre effettuare un cablaggio davvero minimo. L'implementazione è agevolata anche dalla presenza della libreria Keypad, che mette a disposizione del programmatore molte utili funzioni che agevolano l'intero compito di gestione delle tastiere.

Il progetto

Il prototipo da realizzare prevede la visualizzazione di un numero su un display LED, a seconda del corrispondente tasto premuto sul tastierino numerico.

Le connessioni elettriche

Il tastierino utilizzato per le nostre prove è formato da ben 12 tasti: i numeri da 0 a 9, il tasto asterisco (*) e il tasto cancelletto (#). Da esso fuoriescono sette collegamenti: le quattro righe (A, B, C, D) sono collegate, rispettivamente, alle porte 8, 7, 6, 5 mentre le tre righe (1, 2, 3) sono collegate, rispettivamente, alle porte 4, 3, 2 di Arduino. Il display a LED esigerebbe sette linee di I/O di Arduino, ma grazie all'adozione del decoder CD4511, un decodificatore e driver BCD a 7segmenti, riusciamo a risparmiare ben tre linee di uscite. Le resistenze di limitazione dei Led sono sempre necessarie e nello schema è utilizzata una rete resistiva.

figura 1 schema elettrico
Figura 1: schema elettrico

Lo sketch

Si tratta di un listato di principio, che può essere, ovviamente, ottimizzato e migliorato. La figura 2 riporta l'intero programma sorgente. Esso inizia con l'inclusione della libreria per il keypad. Quindi, inizializza le due costanti ROW e COLS, rispettivamente a 4 e 3. Questo significa che si può gestire qualunque tipologia di tastiera, anche con molti tasti in più. Subito dopo troviamo un array bidimensionale, contenente i caratteri corrispondenti ai tasti. Subito dopo, gli array rowPins e colPins vengono preparati per contenere le connessioni elettriche alle relative porte di Arduino. È possibile, ovviamente, prevedere altre mappe di caratteri e diversi collegamenti alla scheda. Tutte queste informazioni sono passate alla funzione Keypad, che crea anche una istanza all'omonimo oggetto. La funzione loop() ha il solo compito di definire le quattro porte 10, 11, 12, 13 come uscite, per pilotare il decoder 4511. La funzione loop() esegue, ciclicamente, la lettura del tastierino tramite il metodo getKey(). Esso fornisce il carattere del tasto eventualmente premuto.

figura 2 lo sketch

Figura 2: lo sketch

Una serie di condizioni "if" completano l'opera, attivando le corrispondenti uscite, in codifica BCD. Tale lunga serie serve solo per dare l'idea di base ma può essere estremamente più ridotta, ricorrendo a tecniche un tantino più complesse di ottimizzazione. La configurazione completa di visualizzazione è riportata in figura 3, mediante una tabella riassuntiva degli ingressi e delle uscite.

figura 3 codifica bcd
Figura 3: tabella di corrispondenza tra input BCD e output binario

Utilizzo

Una volta compilato e caricato il programma, esso viene eseguito immediatamente, visualizzando la cifra "0" sul display. È sufficiente premere un tasto numerico sul keypad per mostrare il relativo numero sull'unità a LED. L'esempio proposto segna solo l'inizio per tantissime applicazioni pratiche con qualunque tipologia di tastiere a matrice.

Tom's Consiglia

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