Ciao, oggi avevo intenzione di fare un banale cronometro con arduino, ma dopo circa 65 secondi si resetta e riparte da 0 automaticamente. Se qualcuno ha avuto il mio stesso problema può dirmi come ha risolto
PS. La sceda è un arduino uno
Buona sera,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. ![]()
Guglielmo
P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili
... e DOPO che avrai fatto quanto richiesto, prova a guardare il "tipo" di variabile che hai usato per millis() ... ti accorgerai che, molto probabilmente, hai sbagliato "tipo" ![]()
Guglielmo
Ho fatto quanto richiesto. Scusami ma non sono molto esperto, cosa intendi per tipo di millis?
Sai cosa é il tipo di una variabile? Byte, int, char.. Millis() e tutto quello che ne assume il valore vogliono un tipo la cui sigla é ul. Quale tipo?
Non di "millis", ma di "variabile" ... per lavorare con millis, serve usare delle variabili "unsigned long" ... ![]()
EDIT: Silente mi ha preceduto ![]()
millis() genera un numero che incrementa molto velocemente quindi già dopo 65.6 secondi (65600 millisecondi)
la variabile mill non è più in grado di contenere quel valore perchè l'hai dichiarata unsigned int che può contenere numeri da 0 a 65535.
Per poter immagazzinare correttamente il valore di millis() devi usare un tipo più capiente come per esempio unsigned long
Comunque così hai solo spostato l'asticella più in là perchè anche unsigned long ha un limite, anche se molto alto.
Ti lascio il compito di scoprire dopo quanti secondi anche questo tipo fallirà nel conteggio.
È importante capire questo concetto perchè, non prevenire e gestire l'overflow, può avere effetti imprevedibili e devastanti.