Attivazione relè tramite tastiera + display LCD

Salve a tutti.
Mi sono appena iscritto per un ovvio motivo e spero di aver pubblicato il topic nello spazio giusto. Inanzitutto vi porto al corrente che possiedo una scheda Arduino Uno Rev 3, una tastiera 4x4, un display LCD 16x2 e due processori ATMega328 (con Bootloader) con quarzi e condensatori appositi. Dopo aver fatto qualche progettino da principiante ho messo da parte la scheda e ora voglio riprenderla per utilizzarla per attivare 9 relè tramite la tastiera 4x4. Vi spiego in dettaglio: una volta alimentata la scheda Arduino posso scegliere quale relè attivare attraverso i 9 tasti della tastiera (premendo 1 si attiva il relè 1, con il tasto 2 si attiva il relè 2 etc fino al tasto 9) e i relè rimangono attivati fin quando non si ripreme il tasto (premo il tasto 1 per attivare il relè 1 e rimane attivo fin quando non ripremo il tasto 1). Inoltre voglio visualizzare tramite il display LCD i relè che sono attivi (esempio: Relè attivi: 1,2,3). Con la stessa tastiera, premendo il tasto 0 si disattivano tutti i relè attivi e con i tasti A, B, C e D attivo 4 differenti uscite digitali per altri scopi e si disattivano sempre e soltanto con i rispettivi tasti.
Potete darmi una mano su come scrivere tutto il programma (perché non ricordo perfettamente) ?
Per quanto riguarda la parte hardware so cavarmela, mi basta avere i rispettivi segnali sulle rispettive uscite digitali e per i relè ci penso io (mi serve solo un aiutino sulla tastiera e sul display LCD).
Grazie mille.

PS:Spero di esser stato chiaro.

Spero di esser stato chiaro.

Si, che sei stato chiaro.
Pero', visto che come hardware te la cavi, devi capire come collegare il tutto
tastiera = 8 pin
Lcd = 6 pin
rele' = 9 pin
altri scopi = 4 pin

Si... puoi darmi una mano con la parte software ?

Prima ci devi dire come colleghi il tutto, visto che di Pin a disposizione non ne hai cosi' tanti

Aspetta, non mi tornano i conti ... la uno, se non sbaglio, ha in tutto 14 pin "usabili" come uscite digitali, fra standard e PWM ... ora tu vuoi pilotare 9 rele, piu 4 uscite digitali, in piu collegare la tastiera 4x4 (altri 8 fili), piu il display LCD (mi pare come minimo servano altri 7 fili) ... 9+4+8+7 fa 28 ... e credo che il 28 nel 14 non ci stia ... :wink:

mi sa che se vuoi usare la uno, dovrai costruirti almeno un'espansione a shift register ...

Sono alle prime armi e un progetto simile interesserebbe anche a me... Sarebbe fattibile con modulo i2c per lcd, shift in (74HC165)per tastiera e shift out(74HC595)per i relè? Sempre su un arduino uno?

Dovrebbe ... il modulo I2C richiede due fili (non conto ovviamente le alimentazioni :P), e le espansioni shift register, sia gli ingressi con gli HC165 che le uscite con gli HC595, come minimo 3 (se non si usa il clear, altrimenti 4) ... anche volendo essere pignoli e usare i clear, sono comunque al massimo 10 pin (8 senza i clear) per tutto quanto ...

Etemenanki:
Dovrebbe ... il modulo I2C richiede due fili (non conto ovviamente le alimentazioni :P), e le espansioni shift register, sia gli ingressi con gli HC165 che le uscite con gli HC595, come minimo 3 (se non si usa il clear, altrimenti 4) ... anche volendo essere pignoli e usare i clear, sono comunque al massimo 10 pin (8 senza i clear) per tutto quanto ...

Grazie :grinning:

Giusto... allora, togliendo il display LCD mi serviranno 17 porte digitali.. che non ho.. se dividiamo i compiti a più processori? Cioè il primo si occupa dei primi cinque relè e l'altro degli altri 4 (utilizzando la stessa tastiera) ?

Dimenticavo gli altri 5 tasti (0,A,B,C,D). Allora al primo diamo il compito di accendere i primi d relè più i tasti 0,A e B mentre all'altro facciamo accendere gli altri quattro relè più i tasti C e D.

A questo punto, se vuoi usare due unità, ti conviene farti una standalone con due ATmega328 o usare una Mega.
Se scegli la strada delle due unità, ti conviene secondo me che una gestisca tastiera ed LCD e l'altra i relè.
Le colleghi con I2C e sei a posto.

Scusa, ma perche' non usi gli shift register, invece che due micro ?

Ad esempio, questa era una shield che avevo progettato tempo fa per la UNO, permette 16 ingressi protetti e 16 uscite a collettore aperto (con gli ULN2803), e avanza ancora qualche pin ... fare una cosa simile per quello che ti serve (magari anche piu semplificata) non dovrebbe essere molto diffficile, a livello hardware ... Varie "shield" casalinghe, possono servire ? - #30 by Etemenanki - Generale - Arduino Forum

Ne avevo postate altre, quindi dai un'occhiata ai vari post e vedi che e' possibile fare un bel po di roba, usando semplicemente un paio di shift registers :wink:

Oppure, visto che possiamo collegare in I2C sia tastiera che LCD ( ci sono pure librerie ) rimarrebbero a disposizione 18 pin ( dato che l'I2C usa solo due pin )
In allegato lo schema costruttivo, se poi non sei in grado di montarlo ci sono pure schedine già pronte

http://www.ebay.it/itm/I2C-and-Serial-LCD-controller-with-keypad-interface-for-use-with-16x2-or-20x4-/310827722616?pt=UK_BOI_Electrical_Components_Supplies_ET&var=&hash=item485ec6a778

Si.. So montarlo ma mi spieghi bene come funziona il tutto? Cioè io collego questo circuitino ad arduino alle due porte analogiche A5 e A4 e quando premo i pulsanti sulla tastiera cosa succede?

Succede quello che farai succedere.

Qui trovi una libreria per gestire la tastiera
http://bradsduino.blogspot.it/2013/01/i2c-version-of-using-4x4-universal-16.html
con questo comando char key = kpd.getKey(); leggi il valore del tasto premuto