Go Down

Topic: LCD 2 digit 7segment più barra 2 segment... come usare il tutto? (Read 962 times) previous topic - next topic

Mar 29, 2013, 06:52 pm Last Edit: Mar 31, 2013, 12:02 am by Alebrescia Reason: 1
Buongiorno a tutti...
Partiamo dal presupposto che non sono molto esperto e mi sto approcciando da poco ad arduino...

ho trovato in un vecchio scatolone (@work) questo LCD a 7 segmenti e 2 cifre (+1).
mi pare di aver capito cercando in rete che viene trattato e venduto come 2 cifre (e non 3 come credevo)...
credo derivi da qualche vecchio pc ( ricordate la funzione "turbo"... mi sento vecchio... eheh )

ho cercato invano datasheet e compagnia bella... ma non ho trovato nulla e non saprei come utilizzarlo... qualcuno ha qualche idea? vi lascio le foto....
Grazie.


P.S.
piccola nota.... Se lo alimento esce scritto 66... notizia utile? ^_^


grazie.

uwefed

Nessun idea.
Praticamente é un display a 7 segmenti con un controller suo e ignoto. Sta sotto la chiazza di lacca nera.

Ciao Uwe

leo72

Se appare 66 MHz acceso, scommetto che col turbo appare 133!  ;)
Comunque quoto Uwe, non è un semplice display ma ha anche un chip driver per cui o lo dissaldi da quella scheda oppure ci fai ben poco

Non nascondo che il dubbio c'era... ma con così tanti pin riportati, in fondo in fondo, speravo esistesse il metodo x usarlo così com é...
Va bene... mano al saldatore!
Ci risentiamo appena lo smonto! Heheh
Grazie mille x ora...

#4
Mar 31, 2013, 12:15 am Last Edit: Mar 31, 2013, 12:18 am by Alebrescia Reason: 1
Chiedo scusa per il doppio post in risposta ma devo richiedere nuovamente attenzione... ^_^

Dopo aver dissaldato il display e dopo svariati test sono giunto alle seguenti conclusioni:
le cifre hanno anodo in comune.
i catodi in uscita sono in parallelo per ogni cifra....

perciò... come diavolo faccio ad esempio a far scrivere al display il numero "138" ??? essendo in parallelo non sono in grado di pilotarli singolarmente... sbaglio? dove sbaglio? cosa mi manca?????? (se poi consideriamo che alimentandolo sul PCB scriveva 66 e che probabilmente in modalità turbo, come scriveva leo72, avrebbe scritto 133... il dubbio che non si possa far nulla è alto)

Vi lascio 2 immagini per capirci meglio e uno stralcio di sketch che mi permette di scrivere su entrambe le cifre la stessa cosa (per ora non ho collegato il +5 al piedino 2, che alimenta la cifra a 2 segmenti)

Sui catodi dello schema di collegamento ad arduino si vedono anche le lettere corrispondendi ai segmenti dello schema qua sotto del display...






non è commentato ma si capisce....
Code: [Select]
int G=2;
int F=3;
int A=4;
int B=5;
int C=7;
int D=8;
int E=9;

void setup(){
 pinMode(G, OUTPUT);
 pinMode(F, OUTPUT);
 pinMode(A, OUTPUT);
 pinMode(B, OUTPUT);
 pinMode(E, OUTPUT);
 pinMode(D, OUTPUT);
 pinMode(C, OUTPUT);
}

void zero(){
 digitalWrite(G, HIGH);
 digitalWrite(F, LOW);
 digitalWrite(A, LOW);
 digitalWrite(B, LOW);
 digitalWrite(E, LOW);
 digitalWrite(D, LOW);
 digitalWrite(C, LOW);
 
}
void uno(){
 digitalWrite(G, HIGH);
 digitalWrite(F, HIGH);
 digitalWrite(A, HIGH);
 digitalWrite(B, LOW);
 digitalWrite(E, HIGH);
 digitalWrite(D, HIGH);
 digitalWrite(C, LOW);
 
}
void due(){
 digitalWrite(G, LOW);
 digitalWrite(F, HIGH);
 digitalWrite(A, LOW);
 digitalWrite(B, LOW);
 digitalWrite(E, LOW);
 digitalWrite(D, LOW);
 digitalWrite(C, HIGH);
 
}
void tre(){
 digitalWrite(G, LOW);
 digitalWrite(F, HIGH);
 digitalWrite(A, LOW);
 digitalWrite(B, LOW);
 digitalWrite(E, HIGH);
 digitalWrite(D, LOW);
 digitalWrite(C, LOW);
 
}
void quattro(){
 digitalWrite(G, LOW);
 digitalWrite(F, LOW);
 digitalWrite(A, HIGH);
 digitalWrite(B, LOW);
 digitalWrite(E, HIGH);
 digitalWrite(D, HIGH);
 digitalWrite(C, LOW);
 
}
void cinque(){
 digitalWrite(G, LOW);
 digitalWrite(F, LOW);
 digitalWrite(A, LOW);
 digitalWrite(B, HIGH);
 digitalWrite(E, HIGH);
 digitalWrite(D, LOW);
 digitalWrite(C, LOW);
 
}
void six(){
 digitalWrite(G, LOW);
 digitalWrite(F, LOW);
 digitalWrite(A, LOW);
 digitalWrite(B, HIGH);
 digitalWrite(E, LOW);
 digitalWrite(D, LOW);
 digitalWrite(C, LOW);
 
}
void sette(){
 digitalWrite(G, HIGH);
 digitalWrite(F, HIGH);
 digitalWrite(A, LOW);
 digitalWrite(B, LOW);
 digitalWrite(E, HIGH);
 digitalWrite(D, HIGH);
 digitalWrite(C, LOW);
 
}
void otto(){
 digitalWrite(G, LOW);
 digitalWrite(F, LOW);
 digitalWrite(A, LOW);
 digitalWrite(B, LOW);
 digitalWrite(E, LOW);
 digitalWrite(D, LOW);
 digitalWrite(C, LOW);
 
}
void nove(){
 digitalWrite(G, LOW);
 digitalWrite(F, LOW);
 digitalWrite(A,LOW);
 digitalWrite(B, LOW);
 digitalWrite(E, HIGH);
 digitalWrite(D, LOW);
 digitalWrite(C, LOW);
 
}

void loop(){
 zero();
 delay(500);
 uno();
 delay(500);
 due();
 delay(500);
 tre();
 delay(500);
 quattro();
 delay(500);
 cinque();
 delay(500);
 six();
 delay(500);
 sette();
 delay(500);
 otto();
 delay(500);
 nove();
 delay(500);
}

Brunello

Quote
Dopo aver dissaldato il display e dopo svariati test sono giunto alle seguenti conclusioni:
le cifre hanno anodo in comune.
i catodi in uscita sono in parallelo per ogni cifra...

Era abbastanza intuibile, bastava contare i piedini. Fossero state cifre separate dovevano essere almeno 19

Quote
Perciò... come diavolo faccio ad esempio a far scrivere al display il numero "138" ??? essendo in parallelo non sono in grado di pilotarli singolarmente.


E perche' no... se hanno i segmenti in comune devi gestire le cifre in Multiplexing.
Ovvero collegare i 3 anodi ( che non sono in comune, ma separati ) a 3 pin di arduino e quindi inviare i dati di una cifra alla volta.

PS. Non e' buona cosa collegare i segmenti del display direttamente sui pin, una resistenza di limitazione ci andrebbe messa ( perlomeno come lo stai usando adesso in modo statico )

Leo ha fatto un bel progetto di orologio con gestione delle cifre in multiplexing, dagli un'occhiata perche' dovresti gestirlo il quel modo
http://www.leonardomiliani.com/arduino/

leo72


Dopo aver dissaldato il display e dopo svariati test sono giunto alle seguenti conclusioni:
le cifre hanno anodo in comune.
i catodi in uscita sono in parallelo per ogni cifra....

Normale, la maggior parte dei display hanno anodo o catodo in comune e poi le altre linee sono in comune fra tutti i led del display. Prendi i display con 4 cifre complete, dovrebbero avere una marea di pin per pilotare i led singolarmente.

Quote

perciò... come diavolo faccio ad esempio a far scrivere al display il numero "138" ??? essendo in parallelo non sono in grado di pilotarli singolarmente... sbaglio? dove sbaglio? cosa mi manca??????

Devi multiplexarlo. Brunello ti ha suggerito un mio progetto. L'idea di base è quella che uso sul Micrologio, ossia:
dai corrente al primo anodo, metti a massa i catodi dei led che vuoi accendere per comporre il segmento necessario. Aspetti un piccolo lasso di tempo. Togli corrente a quell'anodo e dai corrente al successivo. Metti a massa i catodi dei led da accendere. Aspetti un altro pò. Ripeti per l'ultimo anodo.
Poi riparti da capo.

Quote

(se poi consideriamo che alimentandolo sul PCB scriveva 66 e che probabilmente in modalità turbo, come scriveva leo72, avrebbe scritto 133... il dubbio che non si possa far nulla è alto)

Lì era il driver che faceva tutto, riceveva l'informazione da visualizzare (66/133 MHz) da qualche altro componente e poi accendeva lui i led usando lo schema suddetto.

Innanzitutto Grazie mille x i suggerimenti...
Se oggi riesco a far due prove, ci provo...
@brunello, si mi sono espresso male... l anodo é comune prese le cifre singolarmente(era tardi e connettevo poco)...
In relazione alla resistenza di cui parli... né ho messa una sul +5 in ingresso agli anodi.... non é sufficiente?

Grz ancora per la pazienza... :-)

leo72


In relazione alla resistenza di cui parli... né ho messa una sul +5 in ingresso agli anodi.... non é sufficiente?

Sarebbe bene tu mettesi una R per ogni led perché la R sull'anodo come l'hai dimensionata? Per tutti i led accesi o solo per 1?
Nel primo caso, basta accenderne solo 1 che lo bruci perché esso riceve tutta la corrente dei 7 segmenti. Nel secondo caso, basta accenderli tutti perché ogni led riceva 1/7 della corrente.

Ora, visto che il display lo multiplexerai, puoi usare anche una R leggermente minore di quella che ti servirebbe dato che ogni led starà acceso per un tempo breve. Di che colore sono i tuoi led?

verdi "lime" ^_^

effettivamente non mi stavo ponendo il problema sul dimensionamento... nè ho messa una da 330 ohm per far le prove e star tranquillo... il fatto che con molti segmenti accesi la luminosità fosse bassina non mi creava disturbo per ora.... ^_^
cmq seguirò il consiglio... di modo che la cosa sia fatta per bene...
Grazie mille ancora...

leo72

Verde lime... e che verde è?  :smiley-sweat:
Diciamo che sia... verde  ;)
Quindi dovrebbero avere una tensione inversa di 2V circa.
Con 5V di alimentazione, la R su ogni led dovrebbe essere di 150 ohm per avere 20 mA di corrente. Puoi metterla anche leggermente più grossa di valore, ma se poi multiplexi non salire troppo altrimenti cala troppo la luminosità (in multiplexing qualcosa perde già di suo)

Go Up