Para quienes les pueda ser de utilidad:
Funciona como "Blink sin delay" permitiendo que otro código pueda ser ejecutado al mismo tiempo que se hace parpadear un led, pero a diferencia de éste permite seleccionar los intervalos de encendido y apagado diferentes.
Slds.
/*
- Led parpadeante sin utilizar delay()
- y con diferente intervalo de encendido y apagado
- Basado en "BlinkWithoutDelay" (http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay)
- Permite que otro código pueda ser ejecutado al mismo tiempo sin ser interrumpido
- por el código que hace parpadear el led. Permite además seleccionar un intervalo
- de encendido diferente al de apagado.
- Abril 05, 2009
- Bogotá
- Alejandro Tamayo // www.thepopshop.org // laimagendelmundo@yahoo.ca
- Como funciona:
- Verifica si está dentro de un nuevo periodo de encendido y apagado (On + Off)
- y si lo está (flag = true) verifica si ha pasado el tiempo de encendio y apaga el led,
- de lo contrario lo mantiene encendido.
*/
int ledPin = 13;
boolean flag = true;
long previousMillis = 0;
long On = 50; // tiempo que dura encendido, en milisegundos
long Off = 1000; // tiempo que dura apagado, en milisegundosvoid setup(){
pinMode(ledPin, OUTPUT);
}void loop(){
// aquí es donde puede colocarse otro código que necesita ser ejecutado continuamente
if (millis() < (previousMillis + On + Off)){
flag = true;
}
else {
flag = false;
previousMillis = millis();
}
if (flag == true){
if (millis() > (previousMillis + On)){
digitalWrite(ledPin, LOW);
}
else{
digitalWrite(ledPin, HIGH);
}
}
}