Boa tarde pessoal!

Gostaria de trocar os delays pela função millis()... alguém pode me ajudar?
Obrigado!

void loop()
{
  char comando = Serial.read();

  if(comando=='0')
  {
    digitalWrite(LED1,HIGH);
    delay(2000);
    digitalWrite(LED2,HIGH);
    delay(2000);
    digitalWrite(LED3,HIGH);
    delay(2000);
    digitalWrite(LED4,HIGH);
    delay(2000);
  }

}

Exibições: 413

Responder esta

Respostas a este tópico

Obrigado!

Oi SHP, boa tarde.

Voce que um code ou quer aprender?

Rui

Olá Rui, gostaria de aprender e tbm se puder, reescrever o code trocando os delays pelo millis()
Obrigado

Já testou o código que eu enviei ?

tá rolando...

Já sofri muito com a função delay(). Usar um módulo GPRS por exemplo, que precisa de delays longos, inviabiliza o uso do wdt que é limitado a 8 segundos. Pra resolver isso, basta criar uma função resetando o wdt:

void myDelay(long espera){
  long tempo = millis();
  while ((tempo + espera) > millis()){
    wdt_reset();
   delay(10);
  }
}

Inté,

é só colocar essa função no código

void hold(const unsigned int &ms) { // função de substituição do delay
// Non blocking delay
unsigned long m = millis();
while (millis() - m < ms) {
yield();
}
}

ai ao invés de delay vc escreve hold(2000);

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço