Hace algún tiempo vimos cómo simular un semáforo con 3 leds en Arduino, en donde usamos delay
. En este post veremos exactamente lo mismo, pero con una condición: no usar delay.
El enfoque que hoy veremos servirá para otros proyectos en donde no podemos usar delay, por ejemplo, en uno en donde debemos escuchar el botón presionado de un teclado pero además debemos usar el tiempo de alguna manera (en un cronómetro por poner una referencia).
Para no usar delay usamos el tiempo, sí, el tiempo en milisegundos que ha transcurrido desde que encendimos el Arduino.
El enfoque es sencillo, en lugar de dormir y pausar toda la ejecución, miramos el tiempo.
Voy a poner un ejemplo sencillo:
Enciendo el led verde a las 8:00:00 (aunque en realidad en Arduino se obtienen los milisegundos desde que la placa se ha encendido) y guardo la hora de manera que diga “A las 8:00 encendí el verde”, dejo que el código se ejecute y compruebo a cada momento (dentro del loop) la hora; cuando vea que son 8:00:05 entonces enciendo el led amarillo (apagando el verde), y guardo un registro de que a las 8:00:05 encendí el amarillo, dejo que el código se siga ejecutando y así infinitamente.
¿La ventaja? la ventaja es que podemos tener más código no bloqueante y podemos ejecutar distintas cosas sin necesidad de dormir o esperar.
Para obtener los milisegundos llamamos a la función millis
, y almacenamos el resultado en una global llamada ultimosMilisegundos
. Después de eso, dentro del loop comprobamos si ha pasado el tiempo suficiente como para cambiar de luz del semáforo.
Por cierto, este valor de milisegundos se va a resetear en unos días después de haber encendido la placa, pero no pasa nada, pues volverá a 0 ya que ocurrirá un desbordamiento de la variable; cosa nada grave si solo lo usamos para el tiempo transcurrido.
Como solo cambiamos la lógica, el circuito queda intacto y es el mismo de la vez pasada:
Las resistencias son de 220 ohms.
Si crees que no funciona, prueba el semáforo sin delay en este enlace.
La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…
Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…
El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…
El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…
En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…
Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…
Esta web usa cookies.