Display 7 segmenti con MAX7219 o 74HC595

Ciao a tutti

Cercando dei moduli con 8 display a 7 segmenti da 0,56" (quelli classici, più grandi di quelli da 0,36" solitamente usati nei moduli con MAX7219) mi sono reso conto che, contrariamente a quelli da 0,36", solitamente usano il 74HC595 al posto del MAX7219. C'è una ragione? Forse perché è più economico ed evitano di alzare troppo il prezzo rispetto a quelli più piccoli?

Il 74HC595 non ha generatori di corrente costante e non può regolare la luminosità; la corrente massima è 6mA, ma con i moderni display ad alta efficienza sono più che sufficienti; ci sono altre cose da tenere in considerazione? C'è una libreria ugualmente comoda nell'uso?

Gianluca

@elec72: Sorry but ... this is the ITALIAN section of the forum and the ONLY allowed language is Italian.

Thank you in advance for your understanding.

Guglielmo

Sorry but I will make no effort to translate

No problems :slight_smile:

Guglielmo

Ho acquistato alcuni di questi da 0,56":

Un'altra differenza fra il MAX7219 e i 74HC595 è che il primo, essendo fatto apposta per pilotare anche display a 7 segmenti, incorpora la decodifica per i numeri da 0 a 9 e alcuni caratteri, mentre usando i 74HC595 bisogna inviare (scrivendoli nel codice o tramite una libreria) i codici per accendere i segmenti uno per uno.

Buongiorno a tutti,
ho acquistato anch'io lo stesso prodotto e sono due giorni che sto cercando di capire come accendere i singoli segmenti dei display senza alcun risultato. Prima di "gettare la spugna"
ho quindi pensato di chiedere consiglio a chi ha maggiore esperienza.

Il miglior "risultato" l'ho ottenuto con il seguente sketch che però spegne un segmento alla volta e di cui non ho minimamente capito la logica!!

#include "LedControl.h"

const byte CLK = 8;
const byte CS = 9;
const byte DIN = 10;

const byte ELEMENTS = 1;

LedControl lc = LedControl(DIN,CLK,CS,ELEMENTS);

void setup() {
  lc.shutdown(0,false);
  lc.clearDisplay(0);
  Serial.begin(9600);
}


int rw = 0; 
int cl = 0;
void loop() {
  lc.clearDisplay(0);
  
  for (rw = 0; rw < 8; rw++) {
  Serial.print("rw: ");
    Serial.println(rw);
    for (cl = 0; cl < 8; cl++) {
      Serial.print("cl: ");
      Serial.println(cl);
      lc.setLed(0, rw, cl, true);
      
      delay(1000); 
//      lc.setLed(0, rw, cl, false); 
      
      delay(1000);
    }
    
  }
  Serial.println("ok");
}

Grazie per ogni suggerimento.

Saluti

Enrico

PS: come Arduino utilizzo un Nano

LedControl è per il MAX7219, non per il 595!

Grazie, ma non ho idea di quale altra libreria utilizzare!

Enrico

Che sciocco!! stavo lavorando con una versione più piccola che montava il MAX e mi sono interstardito ad usare la stessa libreria. Dovrò ri-studiarmi il 74HC595!!

Saluti
Enrico

Vedo questa...

E' anche ben documentata. La proverò quando arriveranno i moduli con i display da 0,56".

Non so, provata ma non sono riuscito ad utilizzarla; meglio la ShiftDisplay2, ma anche per questa = sforzi vani!!

Son tre giorni che provo senza l'ausilio di librerie, ma non sono proprio riuscito a capire come farlo funzionare.

In compenso ho trovato questo, che è da 0.56 pollici e dovrebbe funzionare bene con la LedControl.

Appena arriva la provo.

Saluti

Enrico

Costa qualcosa come 10€ e il venditore non è nemmeno tanto affidabile... :frowning:

Da quanto intuisco, con solo due shift register e 8 cifre a gruppi di 4, ci sarà da multiplexare a mano cambiando la cifra accesa ogni 2,5 ms.

La prima cosa da capire è se sono display ad anodo o catodo comune (questo serve per capire la "polarità" dei bit da inviare, sia per i segmenti che per i terminali comuni).

La seconda è come sono fisicamente collegate le uscite degli shift register. Ipotizzo: uno shift controlla gli 8 terminali comuni, e l'altro i segmenti.

La terza è se va inviato per primo il byte contenente gli stati dei segmenti, o quello che sceglie la cifra accesa.

La quarta è l'ordine dei bit nei byte (quale bit inviato comanda cosa).

Per fare tutto questo bastano due shiftOut con valore 1 e 2, e si vede quale segmento di quale cifra si accende. Se si accende quasi tutto tranne una cifra e un segmento sappiamo che la "polarità" dei bit va invertita.

Fin qui ci ero arrivato, accendo un display alla volta, continuo a spegnere un segmento alla volta; inverto il treno di bit per accendere uno alla volta ... nessun risultato!

Ora riposo, penso di riprendere tra una settimana sperando su nuove idee!!

Costa qualcosa come 10€ e il venditore non è nemmeno tanto affidabile... 

Si, ma è l'unico trovato quando e SE arriva ti avverto!

Saluti
Enrico

Inviando 1 e 2 (giù latch, shiftOut, shiftOut, su latch) si accende quale segmento di quale cifra? (e shiftOut con MSB o LSB first?)

Questo è più economico,

Il display 4x0,56" lo vendono da solo; il modulo ha i display da 0,36": i fori di lato stanno a passo 2,54mm.

Era anche il mio dubbio, comunque ho provato ad ordinarne uno.

Enrico

Finalmente oggi mi è arrivato il primo ordinato (questo).

Molto bello, con il MAX7219, cifre da 0.56, ecc.

Unica pecca è la mancanza di specifiche tecniche; nel particolare la piedinatura è per 6 PIN, precisamente: VCC, GND, CS. SCK. SO E SI. Manca il consueto DATA IN, sostituito (ritengo) da SO e/o SI.
Qualcuno potrebbe chiarirmi il significato di questi? (SignalIn/SignalOut ???) e come dovrebbero essere utilizzati?
image

Grazie + saluti

Enrico

Direi che sono i pin del bus SPI ... SO = MISO (Master Input Slave Output), SI = MOSI (Master Output Slave Input), SCK = SCK (Serial [Bus] Clock) e CS = CS (Chip Select).

Guglielmo