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