LED a matrice di punti

Ciao a tutti, vorrei utilizzare 6 di questi Led a matrice di punti per un mio progettino... Il problema è che per utilizzare ciascuno di questi LED, sono necessari 7 piedini di Arduino, uno per ogni "stanghetta"... Ora, dato che arduino ha circa un 22 piedini disponibili e non voglio già acquistare una Arduino Mega.... c'è un modo per gestire questi 6 oggettini con un unico Arduino considerando che dovrei avere almeno 6x7=42 uscite?

Ci sono chip a posta per gestire i display a sette segmenti. E te la cavi con 4 linee per display.

Oppure se vuoi controllare ogni segmento a mano, puoi prendere degli shift register, che hanno 3 ingressi (dati, clock, enable) e 7 uscite o più.

Ciao Alessandro e grazie per le risposte... Purtroppo per me questo è arabo...

Andiamo per gradi: hai qualche riferimento per i chip a posta per gestire i display? Cosa vuol dire che me la cavo con 4 linee? Che mi bastano 4 cavetti anzichè 8 per gestirlo?

Per quanto riguarda gli shift register sai dirmi qualcosa in più? Funzionamento o dove trovarli?

Grazie infinite...

Io per comandare i 7-segments e le matrici led in generale ho usato un max7219. Occupa solo 4 piedini di Arduino e puo' controllare sino a 8 matrici led a 7 segmenti. Ti consiglio di leggere questo: http://www.arduino.cc/playground/Main/LEDMatrix

oppure se vuoi la pappa bella e pronta ti rimando ad un mio articolo in cui controllo 4 di quelle matrici led a 7-segmenti: http://www.stefanomanni.it/arduino/2009/03/06/control-four-7-segments-digits-with-a-max7219/ (e' in inglese ma è facile da capire)

Se hai domande in proposito fallo pure commentando la mia pagina.

Ciao ciao :D

Ti chiedo scusa, ero di fretta e ho scritto di getto :)

Non saprei dirti i chip precisi, non ne ho mai usati di persona. Uno shift register è in generale un integrato che riceve lo stato delle linee di uscita in modo seriale (un bit dopo l'altro, nel tempo) da una linea DATA. Ci sono altre 2 linee ma non serve che te le spieghi ora. Quando l'ic ha ricevuto tutto, sulle linee di uscita ti ritroverai la stessa sequenza che tu gli hai dato in ingresso.

uccio ti ha consigliato il max7219. Questo è un tipo particolare di shift register, appositamente studiato per usare i display a sette segmenti. La differenza con gli shift register "standard" è che non c'è corrispondenza tra la sequenza di bit che gli dai in ingresso e le linee uscite. Mi spiego meglio.

Se tu al max gli dici 5, ovvero 101... le uscite non saranno 0000101 (come invece sarebbe per gli shift register standard), ma saranno diverse... giuste però perchè sul display compaia la cifra 5. Saranno ad 1 le uscite che corrispondono al segmenti da accendere, 0 per i segmenti da tenere spenti.

Sono stato sufficientemente chiaro?

Quando ho parlato di linee, significa che ti bastano 4 cavetti per comandare quel IC (circuito integrato) e quindi 4 uscite dell'arduino.

Ottima guida uccio ;)

Se tu al max gli dici 5, ovvero 101... le uscite non saranno 0000101 (come invece sarebbe per gli shift register standard), ma saranno diverse... giuste però perchè sul display compaia la cifra 5

in realtà il max7291 puo' essere utilizzato come qualsiasi shift register. il comportamento secondo cui lo stato delle uscite non corrispondano allo stato del registro si ha quando si "dice" al max7219 di usare una particolare codifica (B-code). Addirittura si possono usare alcune uscite con il B-code altre senza B-code. Quindi a mio avviso è molto potente.

@ilcl4z grazie :)

Ah si? Figo questo ic allora :P Non si finisce mai di imparare :)

uccio, grazie. Documento molto interessante e proprio quello che serviva a me!! Appena finisco il mio progettino proverò ad utilizzarlo... Nel frattempo mi è venuta "alla mano" un'altra tentazione: il propeller clock ma... a breve aprirò un post per capire se con arduino si può fare qualcosa di interessante....

hola! mi intrometto in questa discussione con le mie domande lamer da principiante, non vogliatemi troppo male ^___^

prima di provare con il max ho provato con un display singolo, riferendomi a questo esempio: http://www.wiring.org.co/learning/examples/segment_display.html

prima di tutto: dice che i display a 7 punti possono essere usati sia come anodi sia come catodi. io però riesco a farli accendere solo come anodi, cioè al piedino centrale del display mando 5v, e per accendere le stanghette mando LOW, se mando al piedino del display GND e nei pin dell'arduino HIGH come nell'esempio non succede un cavolo... perchè?!?

secondo: tutte le volte che modifico il software e clicco su upload to board devo staccare il cavo che va dal 5v dell'ard. alla breadboard se non voglio beccarmi questo errore: avrdude: stk500_getsync(): not in sync: resp=0x00 avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51 è normale??

terzo: quasi riuscito, si illuminavano correttamente solo le stanghette inferiori (riferendomi all'esempio di wiring solo e d g c per capirsi) beh non so che cavolo sia successo ma ora, anche dopo riavvio del computer staccando e riattaccando l'arduino, se attacco il filo da 5v alla breadboard col display non _mi scrive più nulla nel serial monitor_. appena lo stacco il serial monitor continua a funzionare correttamente facendomi i println.. AIUTO!! che può essere? ho fatto del danno?? (i primi caratteri del serial monitor sono `5)?jRü ma forse è normale questo..)

quarto: ho acquistato due tipi di display, uno è come nell'esempio di wiring Led Bright BS-A501RD ha 5 piedini nella parte superiore e 5 in quella inferiore. il cavo che devo collegare ai 5 volt per accenderlo è il 3° il mediano, come nella figura del sito. l'altro modello è Led Bright BS A305RD e ha 3+2 piedini da una parte e 4+2 dall'altra. ho provato a scaricare il datasheet da qui http://www.datasheetarchive.com/BS-A305RD-datasheet.html ma non ho mica capito dove mettere i 5 volt.. facendo qualche prova sono arrivato ad un po' di luce, ma non è molto chiaro comunque..

prima di tutto: dice che i display a 7 punti possono essere usati sia come anodi sia come catodi. io però riesco a farli accendere solo come anodi, cioè al piedino centrale del display mando 5v, e per accendere le stanghette mando LOW, se mando al piedino del display GND e nei pin dell'arduino HIGH come nell'esempio non succede un cavolo... perchè?!?

i display a 7 segmenti (in realtà sono otto considerando il punto) sono delle matrici di led. I led sono dei diodi (http://it.wikipedia.org/wiki/Diodo) e come diodi hanno due capi: l'anodo (il culo) e il catodo (la testa). Tramite un resistenza in serie la corrente può entrare SOLO dall'anodo. Come riconoscere l'anodo dal catodo? Nei led l'anodo ha generalmente la gamba piu' corta. Siccome i display sono tutti impacchettati non puoi arrivarci quindi devi leggere il datasheet. Dire farli accendere come anodi o come catodi è sbagliato in quanto per accendere un led bisogna iniettare corrente nel suo anodo. Quindi il fatto che i tuoi segmenti si accendano o meno dipende dal fatto di come i tuoi led sono disposti nella matrice. Se non ti è chiaro potresti guardare questo post in cui controllo un display a 7 segmenti (ANODO COMUNE) senza l'uso di altri integrati (come il max): http://www.stefanomanni.it/arduino/2009/01/26/control-an-7-segment-led-matrix-with-a-potentiometer/

quarto: ho acquistato due tipi di display, uno è come nell'esempio di wiring Led Bright BS-A501RD ha 5 piedini nella parte superiore e 5 in quella inferiore. il cavo che devo collegare ai 5 volt per accenderlo è il 3° il mediano, come nella figura del sito. l'altro modello è Led Bright BS A305RD e ha 3+2 piedini da una parte e 4+2 dall'altra. ho provato a scaricare il datasheet da qui http://www.datasheetarchive.com/BS-A305RD-datasheet.html ma non ho mica capito dove mettere i 5 volt.. facendo qualche prova sono arrivato ad un po' di luce, ma non è molto chiaro comunque..

credo che tu non abbia capito molto bene come sono fatti questi display dentro. Non hanno nessun pin di alimentazione a 5 volt. Ma hanno 8 pin che corrispondono ai 8 segmenti e i restanti 2 pin indicano la cifra e sarebbe l'anodo comune a tutti i segmenti nel caso di display COMMON ANODE oppure corrisponde al catodo comune a tutti i segmenti nel caso di display del tipo COMMON CATHODE.

spero si essere stato chiaro se hai domande approfitta

ciao

ciao uccio, grande per i tutorial!

allora ok le idee sono un po' più chiare, i miei display di chiamano bsA305 da datasheet common Anode (i common cathod di chiamano bsCblabla) quindi attacco all'anodo (polo positivo) il 5volt+resistenzada220ohm e al catodo di ciascn led i vari pin dell'arduino, quando faccio uscire low (chiudendo il circuito anodo-catodo) si accendono.

tutto ok, solo un segmento non si accende. gli metto vicino un led per controllare che dall'arduino arrivi il giusto segnale ed è tutto regolare, il led di debug si accende e spegne quando dovrebbe. mi verrebbe da pensare che sia rotto il display, ma su due display che provo dello stesso modello me lo fa su entrambi. booh?

per provare ho fatto una cosa molto grezza: a intervallo di 1 secondo mando HIGH o LOW a tutti i piedini dell'arduino, e comunque quel segmento non accenna ad accendersi. se scollego tutto e lo vado a testare singolarmente con un cavo che va dai 5v all'anodo e un cavo che va a massa funziona..

(ps ho anche risolto i due problemi che avevo con la seriale e l'upload, con l'upload avevo un avrdude error perchè collegavo i pin 0 e 1 e faceva casino, il problema ocn la comunicazione seriale l'ho risolto aggiornando il software arduino alla 0014)

guarda bene sul datashhet perchè spesso ciò che è comune (nel tuo caso ANODO) è raggiungibile attraverso diversi pin. L'anodo quindi è duplicato! Cio' spiega il fatto che la maggior parte dei display a 7 segmenti abbiano 10 pin quindi due in piu' rispetto al numero dei segmenti: 7+1(il punto) . Il tuo quanti pin ha?

SE ne ha 10 e' possibile che abbassando il pin stai chiudendo la rete anodo-anodo perchè hai beccatto proprio quel pin.

si effettivamente ha 10 entrate, sono disposte 5 in alto 5 in basso, i piedini in mezzo (il 3°) sono gli anodi, da quel che ho capito.

cmq, felicemente [SOLVED], rimaneva non illuminata solo una stanghetta, ho rifatto tutto, staccato tutti fili e rimessi e ora va perfettamente. speriamo che duri eheheh : D grazie ancora!! ciao!

perfetto! ora compra una max7219 della maxim e prova a farli funzionare con quello ;)

ciao a tutti. mi avete incuriosito con questa storia del max 7219. ho cercato un po' online, ma non sono riuscito a capire se questo ic è utilizzabile anche per qualsiasi altro device esterno, oppure è studiato esclusivamente per il controllo dei led? - perdonate la banalità della domanda, ma sono nuovo anche io, ho iniziato solo due settimane fa :) a quanto ho capito, non sono altro che un'estensione dell'interfaccia digitale di output di arduino. una specie di "prolunga", quando i 13 outputpin non bastano più. di conseguenza, se volessi collegare più lampade allo stesso arduino, , mi sarebbe sufficiente collegare tanti mosfet quanti sono i motori alle uscite del max, e il gioco sarebbe fatto.

(giusto?)

ciao frex!
si guarda da quello che ho capito il max è un multiplexer (si chiama così?) quindi una specie di “estensione” dei pin, per leggere o scrivere su molti più pin di quelli standard dell’arduino.
poi il max7219 in particolare chredo che più di un normale multiplexer riesca a gestire facilmente i display a segmenti di led, credo.

in ogni caso si, hai 20 lampade da accendere o 20 sensori da leggere e un arduino, usi un multiplexer.

spero di non aver scritto castronerie…
buon lavoro :smiley:

ciao

il max7219 gestisce matrici di led... non è adatto ad espandere le uscite di arduino ( a meno che tu non voglia usarlo per una matrice di led)

attaccare dei mosfet esterni è un po un incubo... non funziona cosi bene come dice il datasheet

m

quindi l’unica soluzione è il multiplexer?

Se vuoi controllare 4 display con poche porte, ed avere comunque una flessibilita' d'uso prova:

http://www.web4robot.com/Flexel.html

Un integrato preprogrammato con diverse funzioni e controllabile tramite i2c.