Contapezzi con sensore infrarossi e max7216

Ciao,
qlc ha voglia di spiegarmi se esiste un sistema più veloce per aumentare le cifre? Io mi sono fatto tutte le cifre, da 1 a 499, peccato che occupino troppa memoria, quindi mi fà arrivare solo fino a 413.
Esiste un'istruzione che mi ricuce il programma?
Ho allegato un txt con programma

ContaGiusto.txt (56.9 KB)

Certo. Analizzi in count e fai il display solo delle cifre 0-9 per le varie posizioni.
Ovvero count lo analizzi 3 volte (ciclo for da 2 a 0), prima per le centinaia (posizione 2), poi le decine (posizione 1) e poi le unità (posizione 0)
In questo modo disegni solo 0-9 nella posizione giusta

Anche il delay(10) se lo metti 500 volte !! Basta metterlo 1 volta sola alla fine dello switch

Scusa, non capisco, riesci a farmi un piccolo esempio?

in pratica te lo scrivo (non l'ho provato)

...
if(count>0)
{ int num=count;
  for(int i=0;i<=2;i++)  // i da 0 a 2 ovvero le cifre
  { byte cifra=num % 10;    // singola cifra   es. 345&10=>5
    num=num/10;      // toglie parte analizzata, es. 345/10=>34
    switch(cifra)
    { case 0: lc.setRow(0,i,B1111110); break;  // i=quale posizione
      case 1: lc.setRow(0,i,B0110000); break;
...
   }
  }
  delay(10);
}

Grazie tanto. Ora provo. :smiley: :smiley: :smiley:

deresimo:
Ciao,
qlc ha voglia di spiegarmi se esiste un sistema più veloce per aumentare le cifre? Io mi sono fatto tutte le cifre, da 1 a 499, peccato che occupino troppa memoria, quindi mi fà arrivare solo fino a 413.
Esiste un'istruzione che mi ricuce il programma?
Ho allegato un txt con programma

sperando che sia il max 7219

la strada "giusta" e quella di nid69ita

fai modulo sulla cifra e la scomponi con il modulo %

invii le singole cifre al display
tipo

lc.setDigit(0,4,(byte)quinta_cifra_da_destra ,false);
lc.setDigit(0,3,(byte)quarta_cifra_da_destra ,false);
lc.setDigit(0,2,(byte)terza_cifra_da_destra ,true);
lc.setDigit(0,1,(byte)seconda_cifra_da_destra ,false);
lc.setDigit(0,0,(byte)prima_cifra_da_destra,false);

metti tutti i "accorgimenti " necessari
tipo dopo il modulo % riportare il valore originale (se no fa sempre modulo %)
o pulire il display da cifre precedenti