Collegamento Lcd (o keypad) a mux CD74HC4067

Ciao a tutti, ho un piccolo problema: come posso fare a controllare un display lcd (con hd44780) tramite un mux ( http://www.sparkfun.com/products/9056 )? Se collego il display direttamente ai pin digitali dell'arduino è sufficiente identificarli con

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

ma usando il mux collego le porte s0, s1, s2, s3 del mux rispettivamente ai pin 8, 9, 10, 11.

adesso seguendo la tabella delle porte del mux, come posso fare a controllare l'lcd direttamente dal mux?

la tabella è questa: S0 S1 S2 S3 E SELECTED CHANNEL X X X X 1 None 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 2 1 1 0 0 0 3 0 0 1 0 0 4 1 0 1 0 0 5 0 1 1 0 0 6 1 1 1 0 0 7 0 0 0 1 0 8 1 0 0 1 0 9 0 1 0 1 0 10 1 1 0 1 0 11 0 0 1 1 0 12 1 0 1 1 0 13 0 1 1 1 0 14 1 1 1 1 0 15

GRAZIE A TUTTI!!! :)

Ciao,
vuoi attaccarlo ad un mux, o uno shift register ti basterebbe?
In questo caso, esistono delle librerie già pronte, per esempio:
http://www.arduino.cc/playground/Code/LCD3wires

devo attacrlo a quel mux, ma non c'è un modo per usare le librerie LiquiCrystal di arduino per controllare l'lcd attacato al mux?

krossk2: devo attacrlo a quel mux, ma non c'è un modo per usare le librerie LiquiCrystal di arduino per controllare l'lcd attacato al mux?

si, riscrivendo le librerie :)

lesto:

krossk2: devo attacrlo a quel mux, ma non c'è un modo per usare le librerie LiquiCrystal di arduino per controllare l'lcd attacato al mux?

si, riscrivendo le librerie :)

Non credo che ci riesca... quindi l'unica soluzione è quella postata da pitusso? Essendo che all'arduino devo collegare anche un keypad 3x4, è più facile collegare il keypad al mux?

Ciao krossk2

Lasciati dire che non ritengo giusto farti correggere il codice e poi ad aiuto ricevuto canvellarlo dal tread.

Con un multiplexer come il CD4067 NON si possono pilotare dispositivi come un modulo LCD. Questo perché il MUX collega un pin comune a uno dei 8 o 16 entrate/uscite. Con 4 Bit si seleziona quale delle E/U é collegata. Cosí non si possono avere in contemporanea livelli definiti di 8 uscite per collegarle al Display.

Oltre ad usare il CD4094 ci sono ancora altri shift register che si possono usare: http://code.google.com/p/arduinoshiftreglcd/

Ciao Uwe.

uwefed: Ciao krossk2

Lasciati dire che non ritengo giusto farti correggere il codice e poi ad aiuto ricevuto canvellarlo dal tread.

Con un multiplexer come il CD4067 NON si possono pilotare dispositivi come un modulo LCD. Questo perché il MUX collega un pin comune a uno dei 8 o 16 entrate/uscite. Con 4 Bit si seleziona quale delle E/U é collegata. Cosí non si possono avere in contemporanea livelli definiti di 8 uscite per collegarle al Display.

Oltre ad usare il CD4094 ci sono ancora altri shift register che si possono usare: http://code.google.com/p/arduinoshiftreglcd/

Ciao Uwe.

Capisco. Ma almeno un keypad 3x4 (scusate per l'OT) può essere collegato a quel mux?

No, il MUX puó pilotare solo un uscita/entrata alla volta. Le altre 7 o 15 non sono collegate a niente. Ciao Uwe

Caspita questo è un grosso problema. Perchè paraticamente il mio programma si interfaccia col pc tramite seriale, quindi i pin 0 e 1 non sono utilizzabili, e quindi mi restano 12 pin I/O, 6 li uso per l'Lcd e quindi ne restano altri 6. Per collegare anche il keypad 3x4 mi servono 7 pin ma io ne ho solo 6!?... Cosa posso fare per collegare lcd, keypad e contemporaneamente usare la comunicazione seriale??

Per il display lcd già è stato detto uno shift register e fin qui ci siamo, ora ho un quesito da porre in merito al tastierino a matrice che quando l'ho usato l'ho collegato sempre diretto quindi occupando tutti i pin. Ho fatto caso che occorre analizzare i pin della tastiera per identificare quali pin corrispondono alle righe e quali alle colonne e comunque ad ogni tasto premuto corrispondono sempre e solo 2 pin ovviamente diversi, una sorta di combinazione. A questo punto se volessi usare meno pin si potrebbe usare in teoria un CD4021 che è uno shift register utilizzato normalmente per gestire degli ingressi, in genere dei pulsanti. Collegando quindi i pin della tastiera allo shift register si avrà un valore differente per ogni pulsante ed il gioco è fatto... Se non l'ho sparata grossa come si potrebbero collegare i pin del tastierino alle entrate dello shift register? Di certo serviranno delle resistenze di pulldown ma l'alimentazione come glie la si può dare? Saluti a tutti

krossk2: Caspita questo è un grosso problema. Perchè paraticamente il mio programma si interfaccia col pc tramite seriale, quindi i pin 0 e 1 non sono utilizzabili, e quindi mi restano 12 pin I/O, 6 li uso per l'Lcd e quindi ne restano altri 6. Per collegare anche il keypad 3x4 mi servono 7 pin ma io ne ho solo 6!?... Cosa posso fare per collegare lcd, keypad e contemporaneamente usare la comunicazione seriale??

Come giá detto puoi usare dei Shift Register sia come uscite aggiuntive che con altri integrati come entrate. Puoi usare anche I2C port expander che puoi programmare come vuoi come entrate o uscite.

http://www.arduino.cc/playground/Code/I2CPortExpanderAndLCDs e http://www.arduino.cc/playground/Main/I2CPortExpanderAndKeypads Trovi un esempio per un a matrice di tasti 3x4 e per un LCD.

Ciao Uwe

Oppure deleghi il compito di gestire l'LCD e la tastierina ad un altro micro e metti questo in comunicazione con quello principale mediante I2C