i2c keypad mapping

Salve a tutti,
ho comprato un keypad da rs, e sto cercando di interfacciarlo mediante protocollo i2c, tramite un pcf8574AN ad arduino.
I collegamenti sono a posto r1,r2 ed r3 sono da 10k
La libreria per fare l’interfacciamento l’ho trovata qui, ma è stata implementata per un keypad della sparkfun, che credo abbia un pin wiring diverso :

Ecco lo schema:

Il pin mapping del mio keypad è il seguente :

|1|2|3|=1
|4|5|6|=2
|7|8|9|=3
|*|0|#|=4
5 6 7

Riassumendo
COL0 = 5
COL1 = 6
COL2 = 7

ROW0 = 1
ROW1 = 2
ROW2 = 3
ROW3 = 4

Ho quindi collegato i pin del mio keypad ai numeri corrispondenti sullo schema, ma nulla…le corrispondenze sono sballate!
Qualcuno sarebbe così gentile da darmi una mano ? magari mi sfugge qualche particolare.
Grazie

Ciao

P0, P2 e P4 devi collegare rispettivamente ai contatti 5, 6 e 7 del Connettore della tastiera. In questo modo dovresti leggere qualcosa. È ancora da vedere che i tasti premuti corrispondono ai quelli che il programma riconosce.

Ciao Uwe

Quindi le COLONNE sarebbero P0,P2 e P4 , dove sono collegate le resistenza per intenderci...

Ad ogni modo a me legge qualcosa ma non tutti i tasti e sballati...stasera provo e ti faccio sapere. Grazie

@Uwe

Il pin mapping che ho rilevato col tester credo vada bene, è riportato anche nel datasheet http://docs-europe.origin.electrocomponents.com/webdocs/0de0/0900766b80de0aff.pdf

Nel mio caso il è un 4x3 pin matrix

ciao whole "Quindi le COLONNE sarebbero P0,P2 e P4 , dove sono collegate le resistenza per intenderci..." sí, confermo.

La disposizione dei tasti come ti avevo detto era ancora da controllare e da adeguare lo sketch. Comunque ogni tasto dovrebbe produrre un codice (anche se sbagliato) inequivoco. Manda per favore il link della libreria.

Ciao Uwe

@Uwe

http://www.arduino.cc/playground/Main/I2CPortExpanderAndKeypads

Ps: Aggiungo una cosa, escludiamo problemi di comunicazione con l’integrato che pur essendo AN è stato configurato bene come indirizzo, quelli ormai ho imparato a conoscerli un po grazie anche ate :smiley:

Grazie

Ciao whole nel file i2ckeypad.cpp della libreria devi modificare questo secondo la tua tastiera

const char keymap[4][5] = { "123A", "456B", "789C", "*0#D" };

Il file i2ckeypad.cpp lo trovi nella libreria in una delle cartelle del IDE. (adesso non so dirtelo)

Oppure collegare i pin di Arduino con i pin della tastiera in modo che sia collegato come quella usato nel esembio.

Ciao Uwe

define COL0 2 // P2 of PCF8574, col0 is usually pin 3 of 4x3 keypads

define COL1 0 // P0 of PCF8574, col1 is usually pin 1 of 4x3 keypads

define COL2 4 // P4 of PCF8574, col2 is usually pin 5 of 4x3 keypads

define COL3 7 // sorry, don't have a 4x4 keypad to try it

define ROW0 1 // P1 of PCF8574, row0 is usually pin 2 of 4x3 keypads

define ROW1 6 // P6 of PCF8574, row1 is usually pin 7 of 4x3 keypads

define ROW2 5 // P5 of PCF8574, row2 is usually pin 6 of 4x3 keypads

define ROW3 3 // P3 of PCF8574, row3 is usually pin 4 of 4x3 keypads

Secondo questa parte della libreria io devo ricollegare i MIEI pin di righe e colonne, stasera provo così...speriamo.

col0 = P2 mioKeypad pin 5 col1 = P0 mioKeypad pin 6 col2 = P4 mioKeypad pin 7

row0 = P1 mioKeypad pin 1 row1 = P6 mioKeypad pin 2 row2 = P5 mioKeypad pin 3 row3 = P3 mioKeypad pin 4

Ciao

Ho rifatto lo schema con la converisone dei pin da sparkfun al mio..satsera lo provo e incrociamo le dita :D

In bocca al lupo

FUNZIONAAAAAAAAAA!!!! Ho rimappato bene il tutto, ma mi accade una cosa strana...dopo alcuni secondi è come se si addormentasse il tutto e devo azzerare il programma e farlo ripartire...non capisco. Uff!

qual é il programma che usi? ciao Uwe

Grande! Quando arrivi a compimento dovresti proprio scrivere due righe su come utilizzarlo precisamente sul playground!

ciao a tutti @ federico Purtroppo whole ha avuto solo un successo preliminare, ma come leggi c'é ancora un problema nel programma che gli fa dei scherzi. Per questo non ha terminato e per questo é giusto che non abbia ancora pubblicare il risultato del suo lavoro. Ciao Uwe

Salve ragazzi, @uwe con la parola "programma" intendevo impropriamente lo sketch che ho creato per gestire il tutto.

Purtroppo mi sono reso conto che probabilmente a causa dei cablaggi o forse errori frettolosi...quando inserisco nella catena il keypad i2c dopo alcuni secondi è come se si congelasse l'esecuzione del codice e il congelamento avviene random quindi non so proprio come fare debug. Per ora ho collegato il tastierino sui pin digitali perchè comunque ne ho bisogno come input per gestire una programma che sto scrivendo. Questo wk non ci sarò, ma la cosa non la lscio così perchè i2c è una figata!!!

PS: Questione resistenze sull'i2c..io non ne metto poichè dovrebbero essere già sull'arduino...o le devo mettere ?

Ecco il caisno che mi trovo a gestire :D

Il bus i2c sballava a causa della mancanza delle resistenze da 4.7 k FUNZIONA A MERAVIGLIA!!!! Grazie ragazzi :D