Como zerar o Millis ()? Leia mais: Como zerar o Millis no Arduino

Como zerar o Millis ()?

Pode usar um RTC. a funcao millis() como vc falou reseta a cada 47dias +-. desta forma, o valor comeca do zero novamente. o que eu faco aqui é criar um timer, que a cada 4294967200 millisegundos avisa o programa que o millis vai resetar.

Leia mais
A função millis() não toma parâmetros e devolve um valor que representa o número de milissegundos transcorridos desde que o Arduino foi ligado. O valor é do tipo unsigned long (unsigned long, 4-bytes ou 32-bits). O valor máximo a que pode chegar é 4.294.967.295 ou 49 dias.A função delay() aceita um número inteiro como argumento, o qual representa o tempo em milissegundos que o programa deverá esperar até poder executar a próxima linha de código – ou seja, tempo de pausa. Por exemplo, para criar uma pausa de 5 segundos você pode simplesmente escrever: delay(5000);

Como Fazer contagem de tempo no Arduino

A função millis() retorna um número indicando há quantos milissegundos o Arduino está ligado. Agora, ao invés de pausar o sistema durante um tempo determinado usando a função delay(), iremos trabalhar com o valor retornado pela função millis() e calcular indiretamente o tempo decorrido.

Como executar duas coisas ao mesmo tempo no Arduino

Leia mais