Go Down

Topic: Inserire una cifra tramite Keypad 4*4 (Read 1 time) previous topic - next topic

murdok

Dec 18, 2012, 12:29 am Last Edit: Dec 18, 2012, 12:32 am by murdok Reason: 1
Salve a tutti, sto cercando di realizzare un conta pezzi dotato di un tastierino 4*4 e display LCD 16*2, mediante arduino uno.
Siccome il controllore non predispone sufficienti i/o per questa applicazione, ho collegato la tastiera tramite il can bus (I2C) grazie all'integrato PCF8574AP.
Ora la mia tastiera ed LCD funzionano perfettamente.
Momentaneamente il tastierino invia solamente un carattere o numero alla volta ad arduino.
La mia necessità è quella d' impostare una cifra tramite tastierino ed associarla ad una variabile.
Come posso fare  :smiley-roll: :smiley-roll:?
Grazie! :)

pelletta

Usi un array e lo popoli di volta in volta

vittorio68

Ciao,

immagino che per "cifra" tu intenda in realtà un numero composto da più cifre, per esempio il numero 375 composto dalle cifre 3, 7 e 5. Se ho capito bene quindi vuoi premere il 3, il 7 ed il 5 sulla tastierina e trovarti nella variabile il valore intero 375.

Oltre al suggerimento di Pelletta, ti propongo un altro sistema, tanto per avere ulteriori spunti.

All'inizio imposti il valore della tua variabile, diciamo V, a zero. Alla pressione di ogni tasto, moltiplichi per dieci il valore attuale di V e sommi il valore del tasto appena premuto.

Quindi nell'esempio iniziale parti con V=0; alla pressione del 3 ottieni: 0 * 10 + 3 = 3; alla pressione del 7 ottieni: 3 * 10 + 7 = 37; alla pressione del 5 ottieni 37 * 10 + 5 = 375. Immagino tu debba quindi gestire una sorta di ENTER per confermare il valore letto.

Se volessi gestire anche un tasto DEL per consentire la correzione del valore finora impostato, ti basta dividere V per 10 e troncare eventuali cifre decimali. Nell'esempio di prima 375 / 10 = (int)37,5 = 37

Ciao.
Vittorio.


Madwriter

interessante metodo più da matematico che da informatico devo dire  :smiley-mr-green:
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

vittorio68

ti ringrazio (per l'"interessante")... peccato che avendo usato solo le 4 operazioni sembri più un metodo da aritmetico che da matematico  :) :) :)

ovviamente ho compreso il tuo post... la mia è solo una battuta...

Madwriter


ti ringrazio (per l'"interessante")... peccato che avendo usato solo le 4 operazioni sembri più un metodo da aritmetico che da matematico  :) :) :)

ovviamente ho compreso il tuo post... la mia è solo una battuta...

Utilizzare un array è la prima cosa che viene in mente ad un programmatore ad uno meno esperto magari viene in mente una stringa concatenata ad un matematico viene in mente il tuo metodo intendevo solo questo  :smiley-mr-green: a quanto pare l'hai capito volevo solo chiarire  :smiley-mr-green:
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

qsecofr

scusate: parassito un attimo questo argomento perchè mi interessa un bel po: anch'io sto facendo un'applicazione con un tastierino numerico... il mio è solo 4 tasti ed ho pensato di attaccare delle resistenze e leggere il voltaggio con un'analogica... in qualche modo funziona ma non sono molto soddisfatto della precisione in quanto i valori variano di una 30ina di punti (da 1 a 1024... 5 step). Volevo capire se questo comportamento "anomalo" è normale perchè uso questo metodo "barbaro" o se era dovuto al tipo di tastiera (è una tastiera flessibile che quindi penso abbia una membrana dentro che penso abbia le sue impedenze... non esattamente un interruttore acceso spento.
Inolte così al volo se tutti voi usate l'integrato PCF8574AP per queste applicazioni o avete altre carte.


pelletta


...
Inolte così al volo se tutti voi usate l'integrato PCF8574AP per queste applicazioni o avete altre carte.



L'ho collegata sempre diretta all'arduino però poi ho usato shift register per aumentare ingressi e uscite se ne avevo bisogno

murdok

Ciao qsecofr, anch'io utilizzo una tastiera flessibile, e dopo aver calcolato tutte le resistenze (sono impazzito :smiley-eek-blue: :smiley-eek-blue:) l'avevo collegata ad un unico pin analogico d'ingresso.
Questo metodo oltre ad essere difficile è impossibile da realizzare, perchè la resistenza dei tasti varia con la pressione esercitata.
Ti ritroveresti nello stesso tasto diversi valori di tensione, quindi per il controllore è come se premi tasti diversi!
Ti conviene installare sulla Ide di arduino la libreria aggiuntiva "KEYPAD" (comprende sia il collegamento parallelo, sia la seriale I2C).
La I2C serve solamente per aumentare il numero di ingressi o uscite del controllore.

Ciao!   ;)

murdok

Grazie per l'aiuto Pelletta e vittorio68   XD!
Inzialmente pensavo un metodo (ma era più complicato) simile a quello di vittorio68.
Proverò ad effettuare tutti e due i metodi, ma non ho alba di come si usi un array per memorizzare una stringa di numeri... Pelletta, mi puoi illuminare?
Comunque la mia intenzione era di inserire i numeri tramite tastiera (uno alla volta, cifra max 10000), una volta inserita, non è necessario dare alcun ordine per memorizzare la serie intera di numeri (man mano che digito la variabile immagazzina il dato, come la calcolatrice); un tasto "Canc" mi cancellerà il dato (una cifra alla volta mi può andare bene!):

Vi ringrazio per la collaborazione  ;)!

qsecofr


Grazie per l'aiuto Pelletta e vittorio68   XD!
Inzialmente pensavo un metodo (ma era più complicato) simile a quello di vittorio68.
Proverò ad effettuare tutti e due i metodi, ma non ho alba di come si usi un array per memorizzare una stringa di numeri... Pelletta, mi puoi illuminare?



Grazie per la dritta sui tasti... effettivamente mi stanno facendo penare... permettimi un suggerimento per il tuo algoritmo: il metodo della moltiplicazione "E' IL METODO". Array e stringhe (che poi sono di fatto degli array) sono da usare per tastiere alfanumeriche ma per i numeri quello è il metodo in assoluto più giusto e facile e ti permette anche un certo risparmio di memoria.


murdok

Grazie qsecofr! allora vorrà dire che da ora mi devo concentrare solo su questo metodo.
Inizialmente pensavo ci fossero delle librerie già pronte per fare ciò!

Pippo89

Ciao a tutti,
ho un problema con il mio sistema costituito da un tastierino 12 tasti e LCD shield: quando vado ad impostare numeri di 5 cifre (ad esempio 18500) invece di darmi su display il numero giusto la visualizzazione mi impazzisce (del tipo che mi scrive -21785 o robe del genere). Secondo voi che tipo di problema potrebbe esserci? Grazie a tutti
Filippo

cyberhs

Quote
ho pensato di attaccare delle resistenze e leggere il voltaggio con un'analogica... in qualche modo funziona ma non sono molto soddisfatto della precisione


Qualche tempo fa ho postato uno schema per keypad 4x3 e 4x4 con sole resistori ed un condensatore.
L'ho calcolato ed ottimizzato con Excel, ma non ho mai avuto modo di provarlo.
Comunque, nel caso peggiore (digit "3") mi forniva una finestra di lettura di circa 23 unità ADC (134mV @ 5V).
Se cerchi nei passati post dovresti trovarlo.

leo72

Questa discussione è di 13 mesi fa...  ;)

Go Up