Resetando Millis()

Boa noite, é meu primeiro post, não sei se estou perguntando besteira ou errado, mas la vai.
Estou fazendo um programa para controlar uma rampa de cervejaria, e queria resetar o millis, no caso de trocas de uma rampa para outra, em cada rampa, ele começa a contar do 0.

Procurei em alguns topicos a encontrei um codigo:

timer0_overflow_count;

Alguem pode me explicar como funciona essa linha de codigo? ou se tiver outra solução.

Obrigado.

O que tu pretendes vai dar asneira... porque vais deixar de ter um relógio que serve para todas as funções e passar a ter um relógio que serve apenas para uma função.

Já viste o exemplo blink without delay?? Porque achas que esse mecanismo não funciona para a tua aplicação??

Então, eu fiz uma função de preparação onde a agua esquenta até 38º, após isso ele entra em um FOR, onde funciona a primeira rampa, no caso:

Aqui é onde a agua esquenta para atingir os 38º

do
{
  preparacao(); // 38
  sensors.requestTemperatures();
  Serial.print("Tempo :");
  Serial.println(millis());
  delay(50);

} while (temperature < 38);

Após isso ele irá para outro laço onde começa a primeira rampa, precisaria que o millis, começa-se a contar quando esse laço inicia, e quando ele terminar o ciclo desse FOR, o tempo reseta e começa uma nova rampa.

do
{
  for (int i = 0; i < 900; i++){ // 55
    sensors.requestTemperatures();
    Serial.print("Tempo :\n");
  Serial.println(millis());
  rampa1();
  }
} while (temperature < 55);

Rampa 2

do
{
for (int i = 0; i < 2400; i++){ //  64
  sensors.requestTemperatures();
  Serial.print("Tempo :");
  Serial.println(millis());
  rampa2();
}
  } while (temperature < 64);
}

Então no caso, quando ele sair de uma rampa, e for para outra, eu reseto o millis, e começo a contagem novamente.

Não sei se meu código está enxuto, ou totalmente correto, já que não tenho nenhuma experiencia com programação.

Caro ztk28, também uso o Arduino na fabricação de cerveja caseira.

Eu faço da seguinte forma, uso uma variável para guarda o tempo de inicio da rampa ex:

int tempoInicialRampa;

E sempre antes de começar um nova rampa eu associo da seguinte forma :

tempoInicialRampa = millis();

depois eu só trabalho com a diferença de milli() - tempoInicialRampa

Outra coisa quando você for postar o código, posta ele completo, ajuda bastante a galera entender melhor o que você pretende fazer.

tecdiego:
Caro ztk28, também uso o Arduino na fabricação de cerveja caseira.

Eu faço da seguinte forma, uso uma variável para guarda o tempo de inicio da rampa ex:

int tempoInicialRampa;

E sempre antes de começar um nova rampa eu associo da seguinte forma :

tempoInicialRampa = millis();

depois eu só trabalho com a diferença de milli() - tempoInicialRampa

Outra coisa quando você for postar o código, posta ele completo, ajuda bastante a galera entender melhor o que você pretende fazer.

Boa, vou testar essa opção.

A opção do tecdiego é a correcta... e funciona e não dá problemas.

Por algum motivo quem criou a função millis() não deixou disponível a opção de fazer reset do contador. E isso foi propositado.