/*
_______________________________________________________________________________
Hacer parpadear un led con tiempos diferentes millis()
_______________________________________________________________________________
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.
*/
/*
_______________________________________________________________________________
Declaración de las variables
_______________________________________________________________________________
*/
boolean estadoLed = true; //guarda el estado del led (encendido o apagado)
int led = 13;
int intervaloEncendido = 300; // tiempo que esta encendido el led
int IntervaloApagado = 800; // 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
/*
_______________________________________________________________________________
Configuración
_______________________________________________________________________________
*/
void setup() {
pinMode(led,OUTPUT); //configura el pin como salida
digitalWrite(led,estadoLed); //enciende el led
}
/*
_______________________________________________________________________________
Función ciclica
_______________________________________________________________________________
*/
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
}
}