Olá a todos Garagista.

 Estou tendo problema em criar um contador de tempo de 0 a 10 segundos usando a função millis, sendo que quando chegar em 10 seg. volta para 0 e inicia uma nova contagem.

Agradeço a todos.

Exibições: 812

Responder esta

Respostas a este tópico

Quatro passos pra resolver:

1 - Armazena o millis em uma variável

2 - Soma o timeout que vc quer nessa variável

3 - Compara essa variável com millis no fluxo do programa

4 - Qdo millis for maior ou igual, expirou o timeout

Como vc quer 10 segundos de timeout, vai somar 10000 a variável em que millis foi armazenada.

Exemplificando com um led:

#define INTERVALO 10000

unsigned long timeout = 0;

void setup()

{

      timeout = millis() + INTERVALO;

      pinMode( 13, OUTPUT );

      digitalWrite( 13, LOW );

}

void loop()

{

   if ( millis() >= timeout )

   {

        // Timeout expirou

        if ( digitalRead(13) == HIGH )

             digitalWrite( 13, LOW );

        else

             digitalWrite( 13, HIGH );

        // Reinicia o timeout para + 10 segundos

        timeout = millis() + INTERVALO;

   }

}

Happy hack :)

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço