Soy tan novato que no se si la pregunta debería ir aqui. allá voy
he visto que millis se pone a cero transcurrido unos 50 días, entonces, ¿esto quiere decir que no debo utilizar delay en el programa? mi intención es que el arduino esté funcionando continuamente.
y otra..
las variables que estén en ejecución, ¿cómo podría guardarlas que no sea en EEprom para el caso de perdida total de alimentación?, si, la batería irá incluida al proyecto, pero hasta esta puede quedar KO.
He pensado en un módulo SD, pero me parece que es matar moscas a cañonazos.
Y cual es tu planteo? Porque pensar en los posibles problemas que has planteado requiere de tener un objetivo que los ponga a prueba.
Sería mejor hablar de el, antes que proponer problemas que no se si tendrás.
De nada.
Te pongo un ejemplo del por qué el reinicio de millis() a los 49.5 (aproximadamente) días no influye en las comparaciones de tiempos (uso hexadecimales para los números grandes porque es más sencillo de escribir).
Supongamos que intervalo contiene 10 (o sea 10 mseg) y que se cumple la igualdad con intervalo cuando millis() contiene 0xFFFFFFF6, entonces guardas este valor en tiempo_anterior. millis() sigue contando hasta llegar al valor 0xFFFFFFFF, si en ese momento se hiciera la resta el resultado sería 9 y no se cumpliría la igualdad.
Ahora pasa otro milisegundo, millis() devuelve 0.
¿Qué resultado devolverá la resta ahora?
Resulta que como hablamos de enteros largos sin signo, el resultado de 0 - 0xFFFFFFF6 es 10 (en decimal) entonces se cumple la igualdad con intervalo y se almacena 0 en tiempo_anterior para usar en la próxima comparación.
Por eso te dije que en un código bien hecho, el reinicio del contador de millis() no hace diferencia.