/*
Hacer parpadear un led con millis() con tiempos de apagado y encendido
diferentes
En el siguiente ejemplo veremos como hacer parpadear un led usando millis(),
pero en este caso el tiempo de encendido y apagado del led son diferentes.
Por lo que necesitamos usar dos contadores de tiempo y activarlos
secuencialmente. Si necesitases mas de un led, solo tienes que duplicar el
programa y las variables.
*/
boolean estadoLed = true; //guarda el estado del led (encendido o apagado)
int intervaloEncendido = 2000; // tiempo que esta encendido el led
int IntervaloApagado = 1000; // tiempo que esta apagado el led
unsigned long tiempoAnteriorEncendido = 0; //guarda tiempo de referencia para comparar
unsigned long tiempoAnteriorApagado = 0; //guarda tiempo de referencia para comparar
int led = 13;
void setup() {
pinMode(13,OUTPUT); //configura el pin como salida
digitalWrite(led,estadoLed); //enciende el led
}
void loop() {
if((millis()-tiempoAnteriorEncendido>=intervaloEncendido)&&estadoLed==true){ //si ha transcurrido el periodo programado
estadoLed=false; //actualizo la variable para apagar el led
digitalWrite(led,estadoLed); //apago el led
tiempoAnteriorApagado=millis(); //guarda el tiempo actual para comenzar a contar el tiempo apagado
}
if((millis()-tiempoAnteriorApagado>=IntervaloApagado)&&estadoLed==false){ //si ha transcurrido el periodo programado
estadoLed=true; //actualizo la variable para encender el led
digitalWrite(led,estadoLed); //enciendo el led
tiempoAnteriorEncendido=millis(); //guarda el tiempo actual para comenzar a contar el tiempo encendido
}
}