tastierino numerico con meno pin ?

salve a tutti .. Ultimamente sto portando avanti un piccolo progettino .. tutto bene fin quando mi sono accorto che non mi bastano piu i pin per collegare il tastierino numerico che necessita di ben 8 pin ! .. Quindi mi chiedevo se si potesse collegare il tastierino numerico a uno shift register in modo tale da usare meno pin ?? in particolare con il 74CH595...

Risparmieresti solo 1 pin.
IL 595 è un integrato che funziona solo come output per cui al max potresti usarlo per le 4 righe e tenere le 4 colonne collegate all'Arduino. Però necessita di 3 pin per funzionare per cui alla fine risparmi solo 1 piedino.

Hai occupato anche i pin analogici? Quelli li puoi usare anche come I/O digitali, con numerazione da 14 a 19.

Ciao,

IL 595 è un integrato che funziona solo come output per cui al max potresti usarlo per le 4 righe e tenere le 4 colonne collegate all'Arduino. Però necessita di 3 pin per funzionare per cui alla fine risparmi solo 1 piedino.

...un altro modo potrebbe essere quello di usare un piedino analogico di Arduino, es:
http://www.duinomite.com/duinomite-4x3-keypad-on-1-analog-pin/

Carino. Ma se ha i pin analogici liberi, fa prima ad usare quelli :wink:

con 4 pin e 2 integrati (4094 e 4021) puoi avere fino a 64 tasti oppure 56 tasti e 1 buzzer per il bip oppure 16 tasti e un display lcd alfanumerico

se 4 pin sono troppi con 1 solo pin puoi fare tutto, ti serve un altro piccolo microcontrollore da 1 euro, il codice carattere viene spedito come seriale asincrono o come seriale pwm,o, ad esempio il codice carattere potrebbe essere spedito fuori dal mc tastiera ogni 1 millisecondo , il tempo per gli 8 bit del codice carattere in ascii dura in totale 100uS e la pausa 900uSec , intercettando la pausa puoi sicronizzarti con il codice carattere tramite un software_uart o un software_pwm

ricorda che con gli ingressi analogici come tastiera non si possono premere 2 tasti contemeporanemante

per me la cosa migliore rimane nel collegarlo in I2C con un PCF8574

E allora come faccio a collegare sia l LCD che il tastierino numerico in I2c con il Pcf ??

Ciao,

puoi usare due diversi PCF sulla stessa linea ciascuno con il suo indirizzo. Ovviamente dovrai scrivere correttamente lo sketch per utilizzare i due indirizzi diversi.

Ciao.
Vittorio.

appunto .. io nn ho mai usato il pcf ... qualche guida a riguardo per impostare due indirizzi diversi e i vari collegamenti ??

EDIT: ho fatto una ricerca su internet e ho capito piu o meno come cambiare gli indirizzi (ovvero cambiare le tensioni su A0,A1,A2) ma non ho trovato niente su come gestire due pcf (sia a livello di collegamenti con l'arduino sia a livello software)... qualche aiuto ??

collegamento LCD e tastierino con I2C.

per l’ LCD la normale libreria LiquidCrystal_I2C
per il tastierino vedi il link al Playground, in questo caso l’ Address e’ 0x21

Grazie brunello.. un altra cosa.. nel mio caso io uso un tastierino numerico 4x4 .. in questo caso devo collegare il pin della 4 colonna al pin p7 del PCF ?? Cadomai devo aggiungere qualche altra resistenza ??

oltre allo schema di pitusso potresti usare in parallelo a tutti i tasti una resistenza, ed in base a quelle attive capire quali sono attivi come tasti. poi su un solo pin analogico misurare la tensione. Si dovrebbero usare valori diversi e tenere conto di tutte le possibili variazioni, ok troppo casino :slight_smile: pero' per 2 o 3 tasti viene usato spesso come metodo

Puoi fare una via di mezzo ... in SERIE ad ogni tasto una resistenza, 4 valori per colonna, le 4 colonne lette in sequenza da 4 pin analogici ed un quarto filo come comune per tutte le 4 righe ... o meglio ancora a +VCC, con delle resistenze fisse di pull-down su ognuno dei 4 pin analogici ... cosi ogni colonna puo darti 5 livelli che puoi discriminare ... 0 (quando i tasti sono aperti) piu 4 valori dipendenti dal partitore formato dalla resistenza di pull-down piu quella del tasto premuto ...

Ad esempio, se usi 10K come pull-down e 33K, 15K, 4K7 ed 1K sui tasti, dovresti avere:

0V (aperto)
1,16V (tasto del 33K chiuso)
2V (tasto del 15K chiuso)
3,4V (tasto del 4K7 chiuso)
4,5V (tasto del 1K chiuso)

Che dovrebbero essere facilmente discriminabili uno dall'altro anche in caso di tolleranze ampie ... risultato: 16 tasti letti con 4 ingressi (dato che il comune e' a +VCC e non occupa altri pin :wink: )

Se vogliamo strafare, allora si prende un Attiny84, e lo si collega direttamente alla tastiera (8 pin, 4+4).
Poi si usa l'interfaccia TWI e si dialoga con l'Arduino tramite I2C spedendo la lettura della tastiera.

Risultato:

  1. impegno di 2 soli pin, oltretutto condivisibili con altri dispositivi
  2. gestione della tastiera "intelligente" perché l'Attiny84 può leggere i tasti ogni tot e memorizzare le pressioni in un buffer interno, così da spedire all'Arduino ciò che gli viene chiesto. Es.: leggi 1 byte, leggi una stringa fino ad un certo tasto, svuota il buffer ecc.

leo72:
... allora si prende un Attiny84 ...

:fearful: :fearful: :fearful: ... esagerato ... :fearful: :fearful: :fearful:

:stuck_out_tongue: :grin:

Io, eh? E tu con tutte le R che vuoi mettere? :stuck_out_tongue_closed_eyes:

Ma le mie resistenze, mica hanno dentro una MCU ... allora tanto vale fare i tasti con dentro un chip one-wire che restituisce un codice diverso per ogni tasto fabbricato, cosi ci si fa una tastiera con 100x100 tasti usando solo 3 fili, +, - e data :stuck_out_tongue: ...

Eh, questi giovani, che se non mettono una MCU dappertutto, non riescono piu neanche a premere un tasto ... :stuck_out_tongue: XD XD XD

(sto scherzando :P)

Però potrei collegare il Tiny84 via One-wire con l'Arduino così uso solo 1 pin e vinco io argh argh :stuck_out_tongue_closed_eyes:

almenoche' non lo alimenti ad energia solare sempre 3 pin ti servono verso l'attiny :wink:

Non mettergli in testa brutte idee ... altrimenti, oltre ad alimentarlo ad energia solare, ci mette anche un link a 433MHz, cosi facciamo la tastiera senza neppure un filo ...

OOPS, non dovevo dirglelo, mi e' sfuggita ... :stuck_out_tongue: XD XD XD