À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);
}
}

Nenhum comentário:
Postar um comentário