Pages: 1 [2] 3   Go Down
Author Topic: [Risolto] Multiplex 3 Display 7-Seg  (Read 3591 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


adesso soddisfatto al 99% devo eliminare l'effetto ghost.
cmq se riesco a togliere l'effetto ghost che presumo sia dal dato dal fatto di resistenze troppo alte do un'occhiata anche al micrologio di leo per arricchire le mie conoscenze ed al programma di freddy65

vediamo se riusciamo a dargli la "botta finale" 

se un numero non va mai fuori dal range 0-255  al posto di int si scrive byte e fine della storia  (byte occupa meta risorse tispetto a un int)

per l'effetto cifre fantasma  c'è solo una ragione (garantisco)  alla fine di "ogni cifra"  tu hai fatto un software che non spegni i segmenti 
cerco di piegarmi meglio,

mettiamo a cifra piu a sinista che sta visualizzando la cifra uno
alla fine del software che riguarda quella cifra devi spegnere tutti i 7 segmenti se no resteranno accesi
quindi alla fine de software che pilota le tue 3 cifre
devi aggiungere 3 pezzi di codice (uno per cifra )
tipo questo
digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);

Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

Italy
Offline Offline
Newbie
*
Karma: 1
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@gingardu
""Questo sketc ha molte cose da sistemare ad iniziare dagli int che possono essere sostituiti da byte
mi sembra persino errato il modo di dichiarare i pin"
 
da quello che ho capito sulla programmazione se dichiari per esempio:
int A=3;
prima del void Setup
rendi visibile la variabile in tutte le funzioni
e poi semplicemente nel void Setup dichiari che la A o pin 3 (che sono la stessa cosa) e un pin di Uscita
è sbagliato?

Ho appena letto l'ultimo post adesso provo a mettere lo spegnimento delle cifre dal passaggio da una cifra all'altra poi ti dico se va smiley
adesso pausa caffè

Per il momento grazie dell'aiuto.
vi tengo aggiornati
« Last Edit: November 25, 2012, 08:22:31 am by ZG84 » Logged

Solo due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.

Albert Einstein

Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 un modo sicuro che è anche il piu diffuso per settare i pin come OUTPUT 0 (INPUT) è questo

 pinMode(3,OUTPUT);                            //Definisco i pin dove sono collegati
  pinMode(4,OUTPUT);                            //i sette pin dei sette segmenti come uscite
  pinMode(5,OUTPUT);


troppi serial print provvisori nello sketch  fanno funzionare male il multiplex perche introducono una specie di delay ( )    troppo elevato
Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

Italy
Offline Offline
Newbie
*
Karma: 1
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@gingardu

....Ti adoro....
Funziona alla perfezione  smiley-lol smiley-lol
sono felice come un bambino col lecca lecca smiley
ero convinto bastasse accendere un catodo alla volta per evitare l'effetto ghost.
invece bisogna proprio spegnere tutto.

Ma.... tornando un attimo sul discorso byte.....

dal tutorial ufficiale:
A byte stores an 8-bit unsigned number, from 0 to 255.
traduzione
Un byte è composto da otto bit "unsigned" da 0 a 255 (unsigned tradotto letteralmente significa senza segni )

byte b = B10010;  // "B" is the binary formatter (B10010 = 18 decimal)

quindi dovrei farmi una "tabella" con scritto quale valore binario corrisponde al decimale prima di scrivermi il programma?
quindi conseguenza non posso scrivere:
byte c = 3
ma devo scrivere
byte c = B(3 convertito in binario)

forse non ho capito bene.
se non è giusto quello che ho scritto non e che riusciresti a spiegarmela un attimo o un piccolo esempio?

cmq appena finisco di cablare il tutto etichette ecc vi posto un paio di foto almeno avete la "soddisfazione"
di vedere a cosa avete partecipato.

Grazie a tutti ragazzi per oggi ho finito il tempo a disposizione e devo organizzarmi per domani spero di riuscire a finire il cablaggio il prossimo week-end.
Buona giornata.
Logged

Solo due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.

Albert Einstein

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 328
Posts: 22766
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

30 Hz sono 1 secondo/30= 33 ms.
Se tu fai 1/130=7,6 Hz

Prova riducendo il tempo di accensione, usando i microsecondi invece dei millisecondi.
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 569
Posts: 12566
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset


@Menitti

Decisamente sto invecchiando, ed in maniera molto rapida; una volta a chi mi storpiava il cognome lo facevo secco prima che riuscisse a pronunciare la "i" finale, tu l'hai già fatto per ben due volte e ancora non ti ho sparato al ginocchio (inizio sempre con un avvertimento che lasci il ricordo smiley-twist)
Beh, ora sei avvisato, e dire che hai letto pure la mia Guida, devo mettere una password pubblica costituita da una ripetizione di cento volte del mio cognome, così penso che una volta aperto il file non ve lo scordate più smiley-cool
Alla fine di tutto però, ma quando avrai seguito il consiglio di Leo sulla frequenza, dovresti dirmi che resistenze hai usato e, possibilmente, misurare la corrente assorbita da un segmento, è un dato che mi interessa, sempre che la cosa non ti faccia perdere tempo. smiley
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@gingardu

Ma.... tornando un attimo sul discorso byte.....


Grazie a tutti ragazzi per oggi ho finito il tempo a disposizione e devo organizzarmi per domani spero di riuscire a finire il cablaggio il prossimo week-end.
Buona giornata.

quando si usa una variabile bisogna dichiararla all'inizio in qualche modo
di solito si usano

byte,  int, long,  float,
se si sa in anticipo che una variabile non superera mai un certo valore
 di solito di usa il "prefisso"  che mangia meno risorse e se le tue variabili prendono il valore da zero a 10
va bene usare byte al posto di int,
si fa questo per una ragione di spazio  se tu sostituisci 10 int con 10 byte e poi carichi lo schetch   ti accorgi che come dimensione totale diminuisce,

se es so che una variabile puo assumere un valore di 100000 e oltre   devo per forza dichiararla come long

e se la variabile ha il punto decimale devo dichiararla come float,

si srivono una al posto dell'altra niente B

comunque nel reference  puoi approfondire tutto
« Last Edit: November 25, 2012, 10:39:40 am by gingardu » Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

Italy
Offline Offline
Newbie
*
Karma: 1
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@leo72
an ok adesso ci siamo ti avevo chiesto chiarimenti perchè quando avevi affermato che "30 Hz sono 40 ms" non mi tornavano i conti mi veniva 0.033periodico smiley
Con una frequenza di due millisecondi tutto ok niente sfarfallio avevo un effetto ghost ma gingardu mi ha dato una consiglio su come risolverlo.
appena ho tempo posto lo sketch completo.

@Michele Menniti
questa volta non puo essere sbagliato smiley smiley copia e incolla smiley scusa per i post precedenti starò più attento onde evitare di essere gambizzato.
Visto che ero curioso anch'io mi sono sbrigato ad organizzarmi per domani ed ho avuto altri dieci minuti per me stesso smiley

Allora con tensione di funzionamento 5V con resistenze da 680 Ohm per segmento (sono rimaste quelle al momento ma penso che le dovrò abbassare un pò perchè hanno perso un pò di luminosità i display e mi sa che col sole estivo o una forte luce si vedranno poco.....devo fare delle prove)
Frequenza di refresh  2ms
ho una corrente di funzionamento per singolo segmento di 0.080 mA di "media a occhio" e oscilla tra MIN=0.077 mA e MAX=0.088 mA.
a dimostrazione di quanto detto ho fatto due foto perché sembra incredibile un consumo così basso smiley

Foto Sotto
Tester giallo fa da amperometro ed è collegato in serie sul segmento in basso del numero 1 della prima cifra che mi risulta essere quello acceso per più tempo ovvero da 00.0 volt fino a 19.9 volt.
la scala del tester è impostata su 2mA.
L'altro tester fa da voltmetro.

Ultima ora impostando la scala su 20uA e quindi aumentando la precisione del tester mi segna 2.59uA 2.60uA 2.83uA sul segmeno


* WP_000010.jpg (1780.43 KB, 3264x2448 - viewed 20 times.)
Logged

Solo due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.

Albert Einstein

Italy
Offline Offline
Newbie
*
Karma: 1
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

altre


* WP_000009.jpg (1614.93 KB, 3264x2448 - viewed 8 times.)

* WP_000008.jpg (1758.52 KB, 3264x2448 - viewed 6 times.)
Logged

Solo due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.

Albert Einstein

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 569
Posts: 12566
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non riesco a seguirti. Qui dici:
Quote
ho una corrente di funzionamento per singolo segmento di 0.080 mA di "media a occhio" e oscilla tra MIN=0.077 mA e MAX=0.088 mA.
poi però
Quote
Ultima ora impostando la scala su 20uA e quindi aumentando la precisione del tester mi segna 2.59uA 2.60uA 2.83uA sul segmeno
Alla faccia della precisione se il tester passa da 7-8mA a 2-3mA. La portata precedente è da 2A??? perché se è così allora concordo sul fatto che la prima misura sia "sballata": 7-8mA sono tanti per un multiplexer, mentre 2-3mA confermano i nostri dati; la conferma dovresti averla se, come penso, hai anche una portata 200mA, con la quale dovresti avere la conferma dei 2-3mA.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Italy
Offline Offline
Newbie
*
Karma: 1
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

....eccomi qua....

Grossa incomprensione mi sono spiegato male evidentemente....

La misura come da te richiesto se ho capito bene riguarda la corrente assorbita dal singolo segmento.....

riguardo a:
""ho una corrente di funzionamento per singolo segmento di 0.080 mA di "media a occhio" e oscilla tra MIN=0.077 mA e MAX=0.088 mA""

era riferito col tester impostato su una scala massima di 2mA quindi essendo la scala del tester troppo alta per la misura in questione..la misura stessa non è precisa e quindi non va tenuta in considerazione visto che ho a disposizione scale più piccole.
Ulteriore spiegazione:
se guardi bene la foto il tester è impostato su 2mA come scala massima e viene visualizzato  .080 che sarebbe 0.080 mA....il tester non visualizza lo zero prima della virgola perché non significativo(penso).
Quindi sempre in riferimento alla scala da 2mA del tester se fossero 7-8 mA come dici...il tester restituirebbe il numero 1 indicandoti che hai una misura letta che va fuori scala massima....di conseguenza si aumenta la scala del tester fino a riuscire a visualizzarne una lettura.

per quanto riguarda:

""Ultima ora impostando la scala su 20uA e quindi aumentando la precisione del tester mi segna 2.59uA 2.60uA 2.83uA sul segmento""

""Mi sono accorto"" (ho questo tester da quando ho 16 anni ma non l'ho mai usato seriamente) che nella scala di misure della corrente continua ho anche due scale piu' piccole dei 2mA ovvero 200uA e 20uA.
Impostando come scala massima 20uA ottengo le letture sopra indicate che oscillano da 2.59uA a 2.83uA (che sono se non sbaglio 0.00000259 A ovvero 0.00259 mA).
Il motivo per il quale oscillino tra questi valori non lo so di preciso però oscillano.

in parole povere impostare una scala troppo alta su tester equivale a cercare di misurare i decimi di millimetro usando un metro anziché un calibro e non c'è bisogno di dire che troveremo una misura approssimativa o almeno questo, in parole povere, e quello che mi hanno insegnato ed è per questo che ho abbassato la scala.
-------------------
provando ad impostare la scala su 200mA come consigliato ottengo 00.1mA e non i 2-3mA ma penso sia un arrotondamento per eccesso....molto arrotondato per eccesso se le misure in uA fossero giuste....... smiley-sad-blue

non ci capisco più niente nemmeno io.......

conclusioni e opzioni non avendo ancora un altro tester che misuri la corrente per avere un confronto:
A-tester da buttare ha più o meno la mia età.
   anche se c'è da dire che ho provato una ventolina che consuma 200mA (ventola processore pc 12V) che con amperometro analogico   
   segnava 200mA e con tester 199mA
   (non chiedermi di fare prove con quello analogico perchè ha un fondo scala di 3A con risoluzione da 100mA e l'ho già integrato
   sul pannello frontale dell'alimentatore)
B-corrente troppo piccola sul segmento e il tester va a banane
C-le scale da 200 uA e 20 uA sono imprecise
D-boh non ne ho la più pallida idea.....

piuttosto di sparar caxxxte non insisto più di tanto anche perchè al momento non ho modo di verificare l'affidabilità del tester e qualche dubbio sta venendo pure a me.
la mia intenzione per queste misure e simili era di prendere il seguente tester visto che è nuovo (e quindi sicuramente sarà tarato giusto), collegabile al pc tramite usb (misura anche la frequenza) in modo da poter analizzare meglio i dati ma al momento è finito

http://www.robot-italy.com/it/multimetro-bxm280.html

sarebbe interessante avere delle misure da uno che ha sicuramente un tester affidabile anche per vedere se posso fare affidamento su questo tester per misure precise o se è giunta l'ora di usarlo come ferma carte....

mi dispiace non averti potuto dare valori affidabili....sarebbe stato un piacere.

buona serata.
Logged

Solo due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.

Albert Einstein

Italy
Offline Offline
Newbie
*
Karma: 1
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ieri sera l'ho riacceso e notavo fissandolo un leggero sfarfallio sulla cifra delle unità...
ho abbassato le resistenze sempre per discorso luminosita adesso sono a 470 Ohm
ho tolto gli if e li ho sostituiti con delay....adesso lo sto facendo lavorare in microseconds
ho sostituito int con byte ove possibile e funziona tutto....
....sono riuscito anche ad alleggerire il programma di 1,5Kb
un po alla volta entro nel meccanismo e adesso è tutto un altro voltmetro smiley
ha una velocità di aggiornamento allucinante rispetto a prima.

ho dato un'occhiata velocissima al Micrologio ed ho tratto qualche spunto prezioso e i piccoli "trucchi" sul linguaggio di programmazione (cavolate per voi importantissimi per me smiley )....certo che per le conoscenze che ho al momento è mooolto complicato smiley

Adesso vedo se entro sabato riesco a migliorare qualcos'altro....vedremo.

Buona serata a tutti
Logged

Solo due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.

Albert Einstein

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 328
Posts: 22766
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ho dato un'occhiata velocissima al Micrologio ed ho tratto qualche spunto prezioso e i piccoli "trucchi" sul linguaggio di programmazione (cavolate per voi importantissimi per me smiley )....certo che per le conoscenze che ho al momento è mooolto complicato smiley

Mi fa piacere che il mio progettino ti sia stato d'aiuto  smiley-wink
Logged


Italy
Offline Offline
Newbie
*
Karma: 1
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se una cosa è fatta bene merita di essere studiata e approfondita...a prima vista sembra fatta bene anche perché tutte le revisioni che hai fatto dimostrano che ci hai speso un bel po di tempo su questo progetto smiley
e poi sono curioso di capirne il funzionamento....
l'ho guardato molto velocemente e da quello che sono riuscito a capire e già preimpostato per riconoscere le diverse frequenze di funzionamento (1Mhz 8Mhz interni e 16Mhz col quarzo esterno)....ho visto anche tante funzioni che ancora non conosco e dovrò studiarmele ma vedendole già applicate e col tutorial ufficiale ce la faccio tranquillamente (spero smiley )......l'unica mia variabile è il tempo smiley sempre troppo poco purtroppo anche stasera 21.30....poi c'è la funzione Array...come scrivere sull'eprom...un sacco di cose interessanti.

Un buon punto di partenza per vedere, studiare e capire come si imposta un programma e vedere il reale utilizzo delle funzioni.

Ad ogni modo grazie a tutti non avrei mai pensato di ricevere un supporto del genere.
Buona serata a presto.
Logged

Solo due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.

Albert Einstein

Italy
Offline Offline
Newbie
*
Karma: 1
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Come promesso le foto del progetto finito


* WP_000011.jpg (1522.18 KB, 3264x2448 - viewed 11 times.)

* WP_000012.jpg (1810.39 KB, 3264x2448 - viewed 8 times.)
Logged

Solo due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.

Albert Einstein

Pages: 1 [2] 3   Go Up
Jump to: