[Risolto] Multiplex 3 Display 7-Seg

int Vp; // Vp= Tensione letta su pin analogico A0
float T; // T = Dichiarata in anticipo spiego dopo serve per i calcoli
int vs; //Vs = stessa cosa di T

int DT; // DT = Decine Tensione
int UT; // UT = Unita' Tensione
int dT; // dT = Decimali Tensione

//Dichiarazione Varabili per led 7 segmenti
int A=3; // A corrisponde al segmento a collegato al pin 3
int B=4; // B corrisponde al segmento b collegato al pin 4
int C=5; // ecc ecc
int D=6;
int E=7;
int F=8;
int G=9;
int DP=10; //questo è il pin che mi abiliterà il punto sul secondo display che sul
//progetto definitivo colleghero direttamente ai + 5V

int DD=11; //DD= Catodo 1°Display => DD acronimo di Display Decine
int DU=12; //DU= Catodo 2°Display => DU || Display Unità
int Dd=13; //Dd= Catodo 3°Display => Dd || Display Decimali
long x=0; // x= mi servirà dopo + in basso per cercare di far funzionare il
multiplexing

void setup () {

pinMode(A,OUTPUT); //Definisco i pin dove sono collegati
pinMode(B,OUTPUT); //i sette pin dei sette segmenti come uscite
pinMode(C,OUTPUT);
pinMode(D,OUTPUT);
pinMode(E,OUTPUT);
pinMode(F,OUTPUT);
pinMode(G,OUTPUT);
pinMode(DP,OUTPUT); //questo è il led che fa il punto del secondo display
pinMode(DD,OUTPUT); //questi ultimi 3 sono i catodi
pinMode(DU,OUTPUT);
pinMode(Dd,OUTPUT);
}

void zero () { //da "void zero" a "void nove" sono le funzioni che
digitalWrite(A, HIGH); // richiamerò nel void loop
digitalWrite(B, HIGH); // in queste funzioni stabilisco quali pin
digitalWrite(C, HIGH); //devono essere a 5V e a GND per
digitalWrite(D, HIGH); //visualizzare correttamente la cifra sul display
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
}

void uno () {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}

void due () {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}

void tre () {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}

void quattro () {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}

void cinque () {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}

void six () {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}

void sette () {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}

void otto () {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}

void nove () {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}

void loop () { //Da qui inizia il programma lettura Tensione

// Conversione da 0-5 a 0-30
Vp=analogRead(A0); // legge la tensione da 0 a 5 su A0
T =(Vp*(5.0/1023.0))*6; // Tensione convertita e *6 in modo da dare un
//risultato da 0 a 30 Volt

DT = T/10.0; //Formula per ricavare Decine ovvero la cifra che verrà
visualizzata sul 1° display

if ( DT==0){ //Formula per ricavare le Unita che verrano visualizzate sul
UT = (T-DT)/1.0; //2° display
}

if ( DT==1){
UT = (T-DT)-9/1.0;
}

if ( DT==2){
UT = (T-DT)-18/1.0;
}

//Formula per ricavare i Decimale da visualizzare sul 3 display
vs=T; //Trucchetto per avere da un numero decimale "float T=tensione
//su a0" un numero int vs da sotrarre in modo da ricavarmi i
dT = (T-vs)/0.1; // Decimali da visualizzare sul display

//--------------
//--------------
//MULTIPLEXING

unsigned long tempo=millis(); //tempo e uguale a millis
long Fq=130; //Fq è La frequenza di aggiornamento

//x è il tempo aggiornato a fine ciclo in
//modo da avere sempre valide le funzioni if anche se millis
//continua il conteggio.
if(tempo-x<Fq){ //fino a che millis non raggiunge il valore impostato in Fq
digitalWrite(DD,LOW); //metto 0v il catodo Display Decine
digitalWrite(DU,HIGH); //metto a 5v catodo Display Unita nn essendoci diff.di pot.
// il led non si accende
digitalWrite(Dd,HIGH); //stessa cosa su Display Decimali
switch (DT){ //Switch confronta il numero decimale ricavato con le
formule sopra e i case mi richiamano le funzioni "void zero
ecc.." dove sono definiti gli stati logici dei pin
corrispondenti ai segmenti per la
visualizzazione delle cifre su display
i case arrivano fino a tre per le decine
perchè massimo(molto teorici poco pratici) ho 30 volt.
case 0:
zero();
break;
case 1:
uno();
break;
case 2:
due();
break;
case 3:
tre();
break;}
}

if(tempo-x>Fq && tempo-x<Fq*2){ //uguale a sopra solo che onde evitare bug

// il famoso punto del secondo display
digitalWrite(DP,HIGH); //esegue la funzione quando ha finito di
//visualizzare le decine sempre per il tempo
//impostato in Fq
digitalWrite(DD,HIGH);
digitalWrite(DU,LOW);
digitalWrite(Dd,HIGH);
switch (UT){
case 0:
zero();
break;
case 1:
uno();
break;
case 2:
due();
break;
case 3:
tre();
break;
case 4:
quattro();
break;
case 5:
cinque();
break;
case 6:
six();
break;
case 7:
sette();
break;
case 8:
otto();
break;
case 9:
nove();
break;}
}

if(tempo-x>=Fq2 && tempo-x<=Fq3){ //stessa funzione per i decimali
digitalWrite(DD,HIGH);
digitalWrite(DU,HIGH);
digitalWrite(Dd,LOW);

switch (dT){
case 0:
zero();
break;
case 1:
uno();
break;
case 2:
due();
break;
case 3:
tre();
break;
case 4:
quattro();
break;
case 5:
cinque();
break;
case 6:
six();
break;
case 7:
sette();
break;
case 8:
otto();
break;
case 9:
nove();
break;}
}
if(tempo-x>=Fq3 && tempo-x<=Fq4){ //reimposta la variabile x ponendola uguale
x=tempo;} //al conteggio millis attuale in modo da rendere
// ancora valide le condizioni negli if al ripetersi
} //del ciclo

:roll_eyes:
Ciao ZG84,

intanto, per risponderti, bisognerebbe capire se almeno sei riuscito ad accendere un display, poi uno schizzo dello schema non farebbe male.
Se inserici le descrizioni delle funzioni delle variabili, si comprende meglio lo sketch e le sue funzioni.

Comunque, se sulla seriale hai un feedbak dei dati letti corretti, sei già a buon punto.

I display che usi, dovrebbero essere a catodo comune. Ricorda che per vederli accesi, devi inserire dei piccoli ritardi che mantengano attive le uscite per almeno 50-100ms per display che dovresti aver inserito nello sketch, ed infine, ad ogni segmento inseire una resistenza non inferiore a 220ohm, perchè potresti bruciare i pin del 328.

Io comincerei a far accendere il display dei decimi, legato ad una variabile che và da 0 a 9 senza driver di mezzo come il 4511. (questo potrebbe tornarti utile, quando hai bisogno di pin liberi, in quanto è un decoder BCD da 4 a 7 segmenti il chè vuol dire che se lo dovessi usare, potresti risparmiare 3 pin)

Capito questo, passerei alla visualizzazione completa delle tre cifre e di conseguenza alla visualizzazione della variabile letta. :wink:

Grazie dell'attenzione giuseppe adesso tolgo un po di Serial.print per renderlo più leggibile e cerco di aggiungere commenti per renderlo di facile comprensione.
col programma sono vicino alla meta (penso)...la lettura della tensione e corretta un po imprecisa verso 1.2Volt e 27Volt ma da quello che ho letto in giro meglio di cosi senza componenti esterni non si riesce.
ci vorrà un po ma sistemo il post dello sketch.

Se ti vuoi evitare il transistor per ogni cifra e vuoi usare il mutiplexing, puoi dare uno sguardo al mio progetto "Micrologio".
Trovi schema e sketch di un piccolo orologio standalone basato su 328 che comanda un display led a 4 cifre a 7 segmenti in multiplexing con le sole resistenze sugli anodi, senza driver o altri chip esterni.

Ciao, dai un'occhiata qui, c'è anche un mio intervento e del materiale relativo ad un tester per batterie che stavo realizzando.

Ciao.

ecco lo schema

680 ohm di r di limitazione mi sembra davvero eccessiva. Considera che se lavori in multiplexing il tempo di erogazione è così basso che puoi permetterti di diminuirle proprio tanto, e comunque già in condizioni normali non dovresti superare i 330ohm

@Giuseppe
-Creato al volo lo schema e reso spero leggibile lo sketch.
-Si i display sono a catodo comune l'ho scritto ma non l'ho riportato sulla "descrizione dello schema".
-Se non sbaglio, impostando secondo sketch, Fq=130 dovrebbero restare accese 130ms Decine 130ms Unità e 130 ms decimali o almeno quella era l'intenzione.
-le cifre le vedo in sequenza e la lettura è giusta ma se abbasso il valore Fq resta tutto spento e mi sfugge
se il problema stia nel Software o nell'Hardware o in tutti e due(Sbagliando si impara ma solo se si capisce
cosa si ha sbagliato).
-per quanto riguarda il driver 4511 essendo 4 pin ingresso * 3 Display utilizzerei 12pin ed un sacco di punti
di stagnatura,21 resistenze e dovrei aggiungere una schedina in verticale perchè spazio in orrizontale....finito :sweat_smile: ...attualmente col tentativo di multiplexing uso :7 pin per i segmenti + 3 per i catodi dei display + 1 temporaneo per la visualizzazione del punto che sposterò una volta integrato sull'alimentatore a +5V

@leo72
Domani provo a darci un'occhiata perchè adesso non toglierei un ragno dal buco e questo il link?giusto?
http://www.leonardomiliani.com/?p=487

@Freddy65
...ci do senz'altro un'occhiata domani mattina ma...il formato .pde... con quale programma lo apro?Eagle?
ad ogni modo domani lo scarico e vedo se si apre.

@Michele Menitti
ok se la stanchezza non mi inganna usando una resistenza da 330 otterrei un consumo di 10mA per segmento che sarebbe poi il consumo consigliato minimo sul datasheet (allegato) a funzionamento costante .i datasheet li leggo ad occhio non ne ho mai letto uno prima del mese scorso.
Io ho LG5011AS che non c'è ma presumo si rosso Ultraluminoso...puoi farci le operazioni laser agli occhi :smiley: con i 10mA per segmento.
con soli 4 segmenti accessi a funzionamento costante ci vorrebbe già il transistor....pero mi stai dicendo che pilotando in multiplexing potrei farlo (avevo notato anch'io sulla base delle prove che ho fatto che tra funzionamento costante e multiplexing c'è un'abbassamento della luminosità e quindi della corrente che passa).

Ora, secondo il programma che ho fatto e che non funziona come dovrebbe XD, io piloto una cifra alla volta ovvero nella condizione peggiore, la visualizzazione del numero otto, ho:
sempre parlando del funzionamento costante
nel mio caso con resistenza da 680 con un assorbimento I= 7segmenti5mA=35mA
nel caso abbassasi la resistenza a 330 avrei I= 7seg
10ma=70mA
Io non ho tutte le conoscenze per poterlo affermare ma per quanto poco resti attivo il segmento mi sa che è un po alta come corrente.
Tanto per chiarire non voglio contraddirti ma voglio solo capire.
Sempre per curiosità come mai non dovrei scendere al di sotto dei 10mA(ovvero non dovrei superare i 330ohm)?cosa potrebbe succedere?
Mi sembrava di avere letto su un tuo precedente post in un altra discussione e se non ricordo male, che ci fosse la possibilità di togliere del tutto le resistenze?

Bene signori per il momento grazie a tutti per l'aiuto vi aggiornerò sulle novità.
se domani non mi vedete vuol dire che sto porcheggiando nel tentativo di capire :slight_smile:

Grazie a tutti
Buona serata e a presto

390037 Display a led 7 segmenti - CC.pdf (88.2 KB)

rispondo solo per la mia parte :sweat_smile:
effettivamente mi servivano altre informazioni, come il modello di display ed il tipo di multiplexing, prima di sparare, quindi ti dò perfettamente ragione a contraddirmi. Io mi sono basato su due esperienze recenti:

  • ho usato dei display in configurazione normale col 4511, ho visto che con 330 ohm si ha il massimo delle prestazioni senza accecarsi, ho dovuto considerare il fatto che lo strumento può lavorare anche in pieno giorno e nel mio piccolo lab per fortuna entra la luce del sole; chiaro che se fossi stato in uno scantinato con le candele avrei potuto usare delle R da 1kohm e mettere comunque gli occhiali da sole :slight_smile:
  • ho sperimentato il multiplexing di Leo, a 3,3V, con un display costruito appositamente per il mux, nella configurazione che alimenta un display per volta, e sono arrivato alla determinazione che servono R da 22 ohm, ma giusto come protezione, in realtà ho alimentato il display senza le R per alcune ore; gli strumenti non son così veloci come il multiplexer e quindi le misure in corrente non sono molto affidabili, ma non ho mai intravisto valori maggiori di 3mA, quindi alla fine 22 ohm sono un valore di protezione del micro (in caso di corto di qualche segmento) e non di limitazione di corrente nell'uso normale, visto che ne passa molto meno.
    Nel tuo caso si parla di 5V, le correnti in gioco aumentano, quindi potresti trovarti in condizioni simili alle mie, nel qual caso anche 330 ohm sarebbero troppi perché comunque passerebbe una corrente inferiore.
    Dovresti provare a fare qualche misura con un buon multimetro (magari sul segmento che è più presente nelle 10 cifre del display) e vedere che ne esce; alla fine devi ottenere una luminosità idonea all'ambiente operativo del tuo circuito, se te ne serve tanta non trascurare la possibilità di aggiungere quattro transisor sui catodi, perché quelli che sono a rischio reale sono quei quattro pin.
    Scusa per l'inutilità del mio intervento :slight_smile:

130 ms è TROPPO come tempo di accensione.
L'occhio umano vede cambiamenti d'immagine che siano inferiori a 30 Hz.
30 Hz sono 40 ms, tu stai usando un tempo che è 3 volte superiore, ottenendo una frequenza di 7/8 Hz. Non va bene.
Sicuramente hai uno sfarfallìo nella visualizzazione.

Inoltre sei afflitto dal problema dell'erogazione di corrente da un singolo pin di cui stavi discutendo con Michele, ossia avere una corrente talmente bassa da poter usare resistenze molto limitate. Devi andare a ragionare su frequenze di aggiornamento ancora più elevate: nel mio Micrologio io uso addirittura accensioni di qualche centinaio di microsecondi. In questo modo il consumo di 4 cifre non passa appunto i 3 mA.

ZG84:
ecco lo schema

lo schema è incompleto (se no vedi la cifra 1 piu luminosa della cifra otto ) ci vuole un transitore sul comune di ogni cifra,
le resistenze su i segmenti non ci vogliono o le metti molto basse (100 homs) piu che altro facilitare il disegno dello stampato, (il multiplex gia di suo fa passare pochissima corrente ) le resistente ci vanno solo se le cifre vengono accese senza multiplex

adopera un display simile a questo che ha gia tutto colegato all'interno
facilita molto il tutto perche tieni il punto decilmale sempre a metà _1.25 volt 12.58 volt

http://www.ebay.it/itm/0850-Display-7-Segmenti-4-cifre-alto-2-5cm-formato-grande-colore-BLU-/200842024882?pt=Componenti_elettronici_attivi&hash=item2ec31e17b2

come lettura sul pin analogico metti un partitore 6:1 es resistenze 1000-6000 homs

(ovviamente la tensione di ingresso non puo superare i 29,9 volt)

per leggere metti questo (adoperato A5 come ingreso)

int k = map(analogRead(A5), 0, 1023, 0, 3000)/10*10;

ti ritrovi k che e un numero intero che visualizza sia i volt che i che i decimi
es: 12,5 volt k= 1250
es 1,2 volt K=120

se dalla riga
int k = map(analogRead(A5), 0, 1023, 0, 3000)/1010;
togli /10
10 visualizzi anche i centesimi di volt

il punto decimale centrale delle quattro cifre lo tieni senpre acceso con una resistenza adeguata

se i volt in ingresso sono
es 13,50 K = 1350 e sul displai leggi 13.50 perche il punto è sempre acceso,
se lo zero a destra non lo vuoi puoi fare a meno di collegarlo e resta sempre spento (se metti il display a 4 cifre
se adoperi cifre singole non lo metti nemmeno

ZG84:
case 7:
sette();
break;
case 8:
otto();
break;
case 9:
nove();
break;}
}
if(tempo-x>=Fq3 && tempo-x<=Fq4){ //reimposta la variabile x ponendola uguale
x=tempo;} //al conteggio millis attuale in modo da rendere
// ancora valide le condizioni negli if al ripetersi
} //del ciclo

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

int A=3;               // A corrisponde al segmento a collegato al pin 3
int B=4;               // B corrisponde al segmento b collegato al pin 4
int C=5;               // ecc ecc
int D=6;
int E=7;
int F=8;
int G=9;
int DP=10;                   //questo è il pin che mi abiliterà il punto sul secondo display che sul  


pinMode(A,OUTPUT);                            //Definisco i pin dove sono collegati
  pinMode(B,OUTPUT);                            //i sette pin dei sette segmenti come uscite
  pinMode(C,OUTPUT);
  pinMode(D,OUTPUT);
  pinMode(E,OUTPUT);
  pinMode(F,OUTPUT);
  pinMode(G,OUTPUT);
  pinMode(DP,OUTPUT);                           //questo è il led che fa il punto del secondo display
  pinMode(DD,OUTPUT);                           //questi ultimi 3 sono i catodi
  pinMode(DU,OUTPUT);
  pinMode(Dd,OUTPUT);

Porca xxxx :smiley: :smiley: :smiley:
Risolto...al 99%
ho ancora un effetto ghost accetasi consigli intanto;
mi prenderei a picconate sugli stinchi se avessi il piccone :smiley: :smiley:
adesso vi spiego meglio e gentilmente mi spiegherete il perchè :slight_smile:
perso una settimana per una cavolata.......

andando per ordine....il programma funziona...devo risolvere un biccolo bug sull'effetto ghost

@Menitti
secondo la mia modestissima opinione non ritengo che ci siano interventi inutili.
siamo qui per discuterne ovvio che ognuno ha la sua opinione (ed a volte ci sono delle sviste :slight_smile: ) e discutendone si cerca di arrivare a una soluzione :slight_smile: anzi se non avessi letto la tua guida sulla programmazione stand alone sarei ancora un bel po indietro :slight_smile:

@leo72
Hai perfettamente ragione ma la mia intenzione era partire con una sequenza di refresh di 1 sec e poi scendere man mano senza fare il conto che....ammetto la mia ignoranza mi sfugge la formula....mi sfugge anche.... "30 Hz sono 40 ms" e "ottenendo una frequenza di 7/8 Hz".
Per funzionare senza sfarfallii ho dovuto mettere Fq=2ms ma ho ottenuto l'effetto ghost che presumo sia dovuto appunto alla resistenza troppo alta o sbaglio??

special tanks @gingardu

senza questa formula int k = map(analogRead(A5), 0, 1023, 0, 3000)/1010;
non ne sarei mai venuto fuori.
sinceramente non mi convinceva....io avevo e sto usando(modificata per renderla di facile confronto) float k = (analogRead(A5)
(5.0/1023.0))*6
mi sembra più precisa.
Un ringraziamento speciale perchè appunto non essendo convinto della formula l'ho inserita nel programmino con un bel serial print per fare un confronto.
vado a vedere nel serial monitor e sinceramente c'erano troppi "print" che avevo utilizzato per il debug del voltmetro per estrarre decine unita decimali dalla tensione e che creavano molta confusione.
allora ho ben pensato faccio pulizia,
inserisco le due formule,
serial print e posto la differenza sul forum.
cancello tutti i serial print tranne i due per le due formule carico il programma e vedo che i display scorrono più velocemente....
a questo punto mi sono illuminato....ho iniziato a ridurre la Fq (Frequenza d'aggiornamento) fino a togliere lo sfarfallio :slight_smile:
adesso soddisfatto al 99% devo eliminare l'effetto ghost.
Avevo pensato anch'io di usare i byte ma avrei avuto troppo da studiare.
Purtroppo per il tempo che ho a disposizione studio l'elettronica e le funzioni man mano che mi servono :frowning:
mi piacerebbe avere più tempo per dedicarmici ma non ne ho...tieni conto che nel pomeriggio mi devo organizzare per domani.....uff

Detto questo.....
ocuppano cosi tanta ram i serial print??????
comunque se riesco a togliere l'effetto ghost, che presumo sia dato dal fatto di resistenze troppo alte, ed una volta liberata la scrivania dall'attuale progetto do un'occhiata anche al micrologio di leo (sembra essere molto interessante visto che è citato più o meno ovunque) per arricchire le mie conoscenze ed anche al programma di freddy65.

Morale della storia togliendo i Serial.print che sul post li avevo già tolti per motivi di leggibilità ma non dal programma in quanto pensavo non influissero così tanto e portando la
Frequenza di refresh a 2 ms ottengo un buon risultato,,,ottimo se tolgo l'effetto ghost.
adesso provo a mettere mano sulle resistenze.

Grazie a tutti ragazzi

ZG84:
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);

@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 :slight_smile:
adesso pausa caffè

Per il momento grazie dell'aiuto.
vi tengo aggiornati

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

@gingardu

....Ti adoro....
Funziona alla perfezione XD XD
sono felice come un bambino col lecca lecca :slight_smile:
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.

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.

ZG84:
@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 ]:D)
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ù 8)
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. :slight_smile: