HOME

Tastierino da 18 tasti

con soli 4 fili

Salve …

Probabilmente nessuno di voi adotterà mai il tastierino che vi descriverò più avanti, ma la tecnica usata per leggere lo stato dei 18 pulsanti con soli 4 fili, forse può esservi utile in altri contesti.

Descrizione

Nell’ultimo mio articolo mi è stata posta la domanda, su come delle linee dedicate al display, potessero anche colloquiare col tastierino da 16 pulsanti organizzati in una matrice da 4 righe per 4 colonne. A tutti voi è noto che per la gestione del tastierino in questione, sono necessari 8 fili, quattro di output per l’attivazione sequenziale delle colonne, e quattro di input per la lettura sequenziale delle righe, così come evidenziato nello schema seguente.

Adottando la tecnica multitasking, è possibile usare le linee di output per il display anche per il tastierino, riducendo in questo modo il numero di pin necessari a soli 4 pin di input, e questa ovviamente era la risposta alla domanda iniziale.

 

Se occorre vedi lo schema elettrico qui.

Questo mi ha fatto ricordare di una soluzione che adottai tempo addietro, per gestire una tastiera da 18 pulsanti con soli 4 fili di I/O, quando mi ritrovai nell’impossibilità di poter ricorrere al multitasking per mancanza di pin di otput disponibili. Vi ricordo che all’epoca usavamo il piccolo ma glorioso 16F84, ed è proprio di questo circuito che desidero parlarvi, se non altro per il tipo di soluzione adottata, un po’ insolita forse ma a mio avviso interessante.

Per semplificare il discorso, facciamo riferimento alle figure seguenti, che ci aiuteranno a capire come con due soli pin del pic, sia possibile leggere lo stato di tre pulsanti. Condizione essenziale è che i due pin siano di I/O, con resistenze di pull-up interne od esterne inserite.

Nel primo caso possiamo ipotizzare che il pin di sinistra sia settato temporaneamente come input e l’altro come output.  Accadrà che, se il pin di destra è posto a livello logico zero, tutte le volte che il pulsante “1” sarà premuto, il diodo ad esso collegato in serie si troverà polarizzato direttamente, e forzerà un livello logico zero anche sul pin di sinistra, che potremo leggere da software  e condizionare le scelte successive. Il pulsante “4” invece anche se premuto sarà ignorato, perché il diodo ad esso collegato in serie, essendo polarizzato inversamente si comporterà come un circuito aperto. Questa condizione permette di acquisire la pressione del pulsante “1”.

 

 

Nel secondo caso, cioè quando il pin di sinistra sarà settato temporaneamente come output e l’altro come input, saranno invertite le funzioni dei due pin,  varrà ancora lo stesso identico discorso fatto prima ma invertito. Infatti, se il pin di sinistra è posto a livello logico zero, tutte le volte che il pulsante “4” sarà premuto, il diodo ad esso collegato in serie si troverà polarizzato direttamente, e forzerà un livello logico zero anche sul pin di destra, che potremo leggere da software  e condizionare le scelte successive. Il pulsante “1” invece anche se premuto sarà ignorato, perché il diodo ad esso collegato in serie, essendo polarizzato inversamente si comporterà come un circuito aperto. Questa condizione permette di acquisire la pressione del pulsante “4”.

 

Ciò chiaramente è possibile, perché i diodi inseriti in serie ai due pulsanti, attiveranno questi ultimi solo se polarizzati direttamente, e per le condizioni esposte prima, solo uno dei due diodi alla volta può essere attivato, e di conseguenza anche il relativo pulsante, e mai entrambi simultaneamente. 

Il pulsante “7” quando premuto, venendosi a trovare collegato direttamente tra i due pin, sarà acquisito per entrambi i casi descritti pocanzi, per cui questa condizione escluderà le due precedenti, e considererà valida soltanto la pressione del pulsante “7”, ovviamente quando premuto.

Se adesso estendiamo il discorso, coinvolgendo in totale quattro pin come nello schema accanto, otterremo innanzi tutto sei possibili coppie di fili, cioè le coppie AB, AC, AD, BC, BD, e CD.  Sarà il software che abiliterà un pin alla volta come “input” e tutti gli altri a turno come “output”, ottenendo in questo modo tutte  le possibili combinazioni, ed il riconoscimento immediato ed univoco del tasto premuto. Dato che per ogni coppia, come abbiamo visto è possibile acquisire la pressione di tre pulsanti, in totale potremo gestirne 18, numero più che sufficiente per quasi tutte le applicazioni sui microcontrollori pic e non.

 

Pensate che se utilizzassimo 5 pin anziché 4, otterremmo questa volta 30 pulsanti gestibili. Per completezza ho notato che tale numero viene fuori dalla seguente formula:

(N2-N)*1,5 dove N è il numero di pin di I/O.

Comunque, credo che la soluzione descritta fin qui non sostituirà mai l’adozione della tastiera a matrice di 4*4 pulsanti ormai ampiamente diffusa, anche perché adesso usiamo microcontrollori con abbondanti pin di I/O e non ci poniamo più il problema del risparmio.

Potrebbe accadere invece che in taluni casi per esigenze di spazio o di flessibilità, possa tornare utile un tastierino scollegabile con un connettore di soli 4 fili, con un hardware relativamente più complesso nell’organizzazione dei pulsanti, ma più semplice sul circuito a cui è collegato.

Oppure come ho accennato all'inizio, il tipo di gestione degli ingressi potrebbe tornarvi utile in qualche altro contesto in altre applicazioni.

Il software di gestione del tastierino così organizzato, originariamente era nato in ASM, ma recentemente ho trovato il tempo per riscriverlo in Mikrobasic, in modo da dare a tutti l’opportunità di poterlo inserire nei propri progetti come modulo aggiuntivo. Qui potrete scaricare il file principale per provare il tastierino, mentre qui il file del modulo aggiuntivo. Non credo servano ulteriori spiegazioni, i due file  mi sembrano già abbastanza documentati da varie note aggiuntive, ma se occorre non esitate a contattarmi.

Nel listato troverete per ogni pulsante una lettera ad esso associata; naturalmente per le esigenze più disparate, potrete al suo posto inserire un qualunque altro carattere alfanumerico. Inoltre, in testa al listato, dopo la direttiva “symbol” potrete inserire la label che più vi fa comodo e modificare i pin di  I/O, naturalmente aggiornando sia il registro “portb” che il registro “trisb”

Questo è il circuito di prova:

Sperando di aver detto tutto il necessario, vi auguro buon lavoro e buon divertimento.

Saluti.

It9dpx. # 135

F. Mira