Social Icons

Mostrando postagens com marcador NoDelay. Mostrar todas as postagens
Mostrando postagens com marcador NoDelay. Mostrar todas as postagens

Piscando LED Sem delay()

Às vezes você precisa fazer piscar um Led (ou alguma outra função sensitiva de tempo) ao mesmo tempo que outra coisa (como observar o teclar de um botão por exemplo). Isso significa que você não pode usar a função delay, ou você pararia qualquer outro programa enquanto o Led pisca. Aqui segue um código que mostra como piscar um Led sem delay. O código mantém a informação da última vez que o Led ligou ou desligou. Assim, para cada loop ele checa se passou um intervalo de tempo suficiente; se passou tempo suficiente ele desliga o Led caso estivesse aceso, e vice-versa.





Código

int ledPin = 13;                // LED conectado na port digital 13
int value = LOW;                // ligado ou desligado? 
long previousMillis = 0;        //grava ultima posição (On/Off)
long interval = 1000;           // valor de intervalo em milisegundos

void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}

void loop()
{
  // aqui você coloca o aódigo que irá rodar enquanto pisca o led
   // the interval at which we want to blink the LED.
  if (millis() - previousMillis > interval) {
    previousMillis = millis();   // remember the last time we blinked the LED

    // if the LED is off turn it on and vice-versa.
    if (value == LOW)
      value = HIGH;
    else
      value = LOW;

    digitalWrite(ledPin, value);
  }
}