Parpadeo sin utilizar delay – Ejemplo con Arduino Nº 07

Para utilizar las funciones de tipo parpadeo sin utilizar delay, porque a veces necesitas hacer dos cosas a la vez con Arduino, por ejemplo, en el ejemplo del parpadeo, mientras utilizas la función delay(), el procesador está inactivo y no puede responder a los posibles cambios en las entradas, es decir, que si quiere hacer por ejemplo un semáforo interactivo, en el que exista un pulsador de peatones, es imposible hacerlo utilizando la función delay().

En el siguiente ejemplo te mostraré como hacer una secuencia de LEDs y además leer el valor de una entrada. Para ello utilizaremos una función propia del IDE de Arduino llamada millis(), que es una función propia del IDE que nos devuelve un valor que expresa el tiempo que ha pasado desde que se inició el programa, en milisegundos.

El concepto que existe detrás de este algoritmo es ir comprobando si el botón se ha pulsado continuamente, dentro de la función loop(), cada vez que apaguemos o encendamos el LED, anotaremos el momento en el que ha sucedido, y si el tiempo que ha pasado desde que se inició el programa menos el último cambio supera el valor del tiempo de cambio de estado, cambiaremos de nuevo el estado del LED.

En este programa te enseñaré como hacerlo.

CIRCUITO:

Para hacer este circuito utilizaremos cualquier montaje de un LED con una resistencia.

CÓDIGO:

const int Led = LED_BUILTIN;

int EstadoDelLed=LOW;

unsigned long TiempoUltimoCambio=0;

const long Intervalo = 1000;

void setup()

{

pinMode(Led, OUTPUT);

}

void loop()

{

unsigned long TiempoAhora = millis();

if (TiempoAhora – TiempoUltimoCambio >= Intervalo)

{

TiempoUltimoCambio = TiempoAhora;

If ( EstadoLed = LOW)

{

EstadoLed=HIGH;

}

Else

{

EstadoLed=LOW;

}

digitalWrite(Led, EstadoLed);

}

}

 

Comentarios

Deja un comentario