millis rollover e possibile soluzione

Ciao a tutti,
ho una stazione meteo Arduino sempre alimentata che come noto avrá il problema del rollover dei millis() dopo 49 giorni.
Ho provato ad implementare una soluzione ideata da me ma siccome non posso aspettare i 49 giorni per provarla, vorrei metterla alla vostra attenzione per analisi e critiche.
Ovviamente ho messo solo l'estratto che avesse pertinenza con la domanda

 void loop()  {
        
     if (millis() > tempolettura) //legge i sensori di temperatura 1 volta al minuto
      {
      lettura_sensori(); //ogni 60sec manda alla routine di lettura sensori
      tempolettura = (millis() + 60000);
      }

     if (millis() > tempoDisplay) //aggiorna display 1 volta al secondo
      {
      Display(); //routine per aggiornare display LCD ogni secondo
      tempoDisplay = (millis() + 1000);
      }
  
    //QUESTA É LA ROUTINE CHE AZZERA LE VARIABILI CHE UTILIZZANO millis() quando millis() torna a zero       
  
  if (tempoDisplay >= (millis()+2000) //resetta variabili se millis é tornato a zero
    {
     tempoNTP= 0;
     tempoDisplay = 0;
     tempolettura = 0;
     }

Alberto

Magari potresti studiarti QUESTO link e poi QUESTO e ... scoprire che l'overflow di millis() è un falso problema (essenzialmente dovuto a non aver capito come utilizzare nel modo giusto la funzione) ... :roll_eyes:

Guglielmo

Grazie Guglielmo.
Io sono rustico ed avevo trovato una soluzione "fai da te" anche se forse imprecisa e macchinosa; poi arrivano quelli come te che mi smontano e devo tornare allle cose fatte per bene :slight_smile:

Daró subito un'occhiata ai links.

Bertu65:
Io sono rustico ed avevo trovato una soluzione "fai da te" anche se forse imprecisa e macchinosa; poi arrivano quelli come te che mi smontano e devo tornare allle cose fatte per bene :slight_smile:

Hai fatto sicuramente bene a cercare una tua soluzione ... è comunque un bello sforzo di logica e di ragionamento ! :slight_smile:

Poi, in pratica, senza reinventare la ruota, conviene però usare le soluzioni già ottimizzate ... :wink:

Guglielmo

Il rollover é solo un problema se Ti servono ritardi piú di 49 giorni.
In questo caso: http://www.faludi.com/2007/12/18/arduino-millis-rollover-handling/
Per tutti gli altri casi un rollover non é un problema se il controllo del ritardo é stato fatto in maniera giusta.
Ciao Uwe