Funzione millis

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. :slight_smile:

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:wink:

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" ... :wink:

EDIT: Silente mi ha preceduto :smiley:

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.

>dalmnico: Direi che è il caso che ti studi come si usa la funzione millis(), prima QUI, poi QUI e QUI e QUI e tutti gli articoli che sono in QUESTA pagina ... dovrebbero chiarirti un po' le idee.

Dopo di che dai anche un'occhiata a QUESTO post.

Guglielmo