Controllare 4 display a 7 segmenti con un unico shift register

Buongiorno, sono un ragazzo di 3° ITIS, e voglio creare un rilevatore di campo magnetico ambientale da visualizzare su 4 display a 7 segmenti. Come sensore utilizzo un A1325, e per pilotare i display devo utilizzare uno shift register 74HC595. Come posso pilotare tutti e 4 i display solo con uno shift register?

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento se non lo hai già fatto: Regolamento Qui una serie di link utili, non inerenti al tuo problema: - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

Ma chi è che deve studiare ? Se vuoi fare con un solo SIPO, puoi usarlo per pilotare i segmenti e 4 piedini dell' Arduino per pilotare gli anodi/catodi comuni, tramite dei transistors, perché l'Arduino non ce la farà. Oppure puoi fare il reciproco, pilotare gli ano/catodi con l'Arduino e i display con il SIPO.

Matteo_Graziussi: Buongiorno, sono un ragazzo di 3° ITIS, e voglio creare un rilevatore di campo magnetico ambientale da visualizzare su 4 display a 7 segmenti. Come sensore utilizzo un A1325, e per pilotare i display devo utilizzare uno shift register 74HC595. Come posso pilotare tutti e 4 i display solo con uno shift register?

prendi il 74HC595 lo sostituisci con il max 7219 o simili e sei sulla "strada giusta"

1) perché tieni libere le poche risorse di arduino 2) puoi fare le cose fatte bene (variare l'intensità luminosa etc..)

Il problema è che ogni display a 7 segmenti necessita appunto di 8 connessioni (7+1 del puntino), e il 74HC595 non ha abbastanza pin. Non posso utilizzare altri componenti, poichè questi ho a disposizione.

i display 7 seg sono già venduti "connessi " a 4 cifre,

http://www.robot-italy.com/it/7-segment-display-1-tall-red.html

http://www.ebay.it/sch/i.html?_from=R40&_trksid=p2047675.m570.l1313.TR12.TRC2.A0.H0.Xmax+7219.TRS0&_nkw=max+7219&_sacat=0

comunque alla fine anche se riesci a pilotare 4-5 cifre con il solo arduino poi ti devi "rivolgere a i chip dedicati al pilotaggio dei 7 segmenti non c'e "progetto commerciale/professionale" che non li adopera impara subito la libreria ledcontrol che (secondo me) e la cosa più giusta da fare

Matteo_Graziussi:
Il problema è che ogni display a 7 segmenti necessita appunto di 8 connessioni (7+1 del puntino), e il 74HC595 non ha abbastanza pin. Non posso utilizzare altri componenti, poichè questi ho a disposizione.

Se i vincoli sono questi l’unica soluzione è il multiplexing software (ogni cifra dovrà restare accesa 5 millisecondi per volta, in modo da spazzolarle tutte 50 volte al secondo). MA… servono obbligatoriamente quattro driver (transistor) per selezionare la cifra da accendere (di tipo PNP se display ad anodo comune, o NPN se di tipo a catodo comune).

Diciamo che se ci si accontenta di una luminosità molto bassa e non omogenea, allora si potrebbe fare a meno dei driver ed erogare tutta la corrente direttamente con i pin di Arduino… insomma meno di 2.5mA per segmento :confused: In totale si userebbero 3 pin per comandare lo shift register, e quattro pin per scegliere la cifra da accendere.

Con il metodo di Roman Black usi solo un piedino per il 74xx595. Ma se è un problema di piedini disponibili, meglio orientarsi su il MAX7219. Anche i 74xx595 si può fare in daisy chain come l' orologio per dummies di questo forum.

Claudio-f mi sembra una buona idea, i miei display sono a catodo comune e di NPN ne ho abbastanza. Sai darmi più informazioni sul multiplexing software?

Se ne sta parlando assieme ad altri argomenti attinenti nel topic forum.arduino.cc/index.php?topic=447098.0.

Li si usa però un integrato codificatore da BCD a 7 segmenti con ingresso parallelo per passare dai valori binari numerici 0..9 al codice ci comando dei segmenti. Ma basta usare un array di conversione da valori 0..9 (usati come indici) a codici di comando (i valori contenuti nell'array) per avere il byte da mandare allo shift register con shiftOut, ricordando che bit a 1 significa segmento acceso.

Qui c'è praticamente tutto.

Si potrebbe usare i SIPO per pilotare i catodi comuni. Risparmio due piedini (anche con il 595, perché il LATCH non è possibile usarlo). Poi si può fare anche sugli anodi, e mettere la serializzazione in catena. Solo che l' uscita finale dello shift deve essere attivata per ultimo.

ExperimentUno: Si potrebbe usare i SIPO per pilotare i catodi comuni. Risparmio due piedini (anche con il 595, perché il LATCH non è possibile usarlo). Poi si può fare anche sugli anodi, e mettere la serializzazione in catena. Solo che l' uscita finale dello shift deve essere attivata per ultimo.

No, non si possono usare i 74HC595 per i anodi/catodi comuni perché non reggono la somma di corrente di tutti i segmenti.

@Matteo_Graziussi Per fare il multiplexing metti sul 595 i valori per accendere i segmenti voluti e accendi uno dei 4 transistori che corrisponde a quella posizione poi fai la stessa cosa per le altre 3 posizioni e cosí via.

Ciao Uwe

uwefed: No, non si possono usare i 74HC595 per i anodi/catodi comuni perché non reggono la somma di corrente di tutti i segmenti.

Scusate la poca accuratezza, è sottinteso da fare i conti con le capacità degli integrati. Se non sbaglio siamo a 25 mA per piedino.

Quindi, utilizzando il 74HC595 e il multiplexing software i pin dei display come li collego? Allo shift register o ai pin di arduino?

Display alle uscite del 595, e tre pin di Arduino per comandare gli ingressi del 595.

E nello script devo scrivere qualcosa di particolare oltre a latch, data, clock ecc.?

Ok, quindi ad ogni uscita del 595 devo collegare 4 segmenti di 4 display diversi?

Una soluzione è questa, basta allungare la catena ed una sarebbe come qui sotto. |500x286

Matteo_Graziussi: Ok, quindi ad ogni uscita del 595 devo collegare 4 segmenti di 4 display diversi?

Si, uscita -> resistenza -> tutti i segmenti corrispondenti delle varie cifre.

Matteo_Graziussi: Ok, quindi ad ogni uscita del 595 devo collegare 4 segmenti di 4 display diversi?

Perché non fai uno schemino che almeno ci si rende conto tutti, te compreso, come sono i collegamenti ?