Gli ingressi necessari per trattare 2 switch sono 2: un ingresso per ogni switch.
Per la tastiera servono 4 input e 4 output perché i 16 tasti sono connessi a matrice, vedi lo schema seguente (scusate per la semplicità del disegno...)
Come vedi ci sono 4 righe e 4 colonne, i pulsanti della tastiera rappresentano gli incroci tra righe e colonne.
Le righe sono segnali di input per la tastiera (quindi output per il micro), le colonne viceversa sono degli output per la tastiera (quindi input per il micro).
Il micro sarà configurato per avere gli input con delle resistenze di pull-up, quindi salvo connessioni esterne a 0V (0 logico), ogni input sarà visto come connesso a 5V (1 logico).
Un tipico programma caricato su un micro eseguirebbe i seguenti passi per decidere quale tasto sia stato premuto:
- pone a 0V (0 logico) la riga 1 e ad 5V (1 logico) tutte le altre righe.
- legge le 4 colonne, se tutte le colonne sono a 1 logico significa che non è stato premuto alcun tasto
- se una o più colonne sono a 0 logico significa che il tasto in corrispondenza dell'incroco tra la riga 1 e la colonna che si trova 0 è stato premuto.
- pone a 0 la riga 2 e ad 1 tutte le altre righe.
- legge le 4 colonne, se tutte le colonne sono a 1 logico significa che non è stato premuto alcun tasto.
- se una o più colonne sono a 0 logico significa che il tasto in corrispondenza dell'incroco tra la riga 2 e la colonna che si trova 0 è stato premuto.
- precede in questo modo per tutte le righe.
Esempio:
- quando il programma pone a 0 la riga 1, trova tutte le colonne a 1 logico: i tasti da T1 a T4 non sono stati premuti
- quando il programma pone a 0 la riga 1, trova la colonna 2 a 0 logico: è stato premuto il tasto T2
- quando il programma pone a 0 la riga 2, trova la colonna 1 e la colonna 4 a 0 logico: sono stati premuti i tasto T5 e T8.
Come vedi con questo sistema bastano 4 input (colonne) e 4 output (righe) di un micro per gestire 16 tasti.
Non è necessario elaborare tutti i 16 tasti istantaneamente (servirebbero 16 input) perché si parla di tasti premuti da un utente, quindi a "bassa" velocità di variazione. Inoltre si dovranno realizzare dei controlli software di antirimbalzo che comunque rallenterebbero il sistema di lettura.
Spero di aver chiarito qualche dubbio e non averne creati ulteriori...