Este Informe USERS aborda el manejo del tiempo en proyectos con Arduino, un punto que suele pasarse por alto en los primeros pasos de la robótica. Explica por qué detener el programa para esperar puede afectar la respuesta de un sistema físico, y propone una alternativa que mantiene todo el circuito activo.
Auto: Claudio Peña
La limitación de delay()
El Informe arranca por la herramienta más conocida para generar pausas: la función delay(). Su funcionamiento es directo, ya que detiene la ejecución del programa durante una cantidad fija de milisegundos.
Esa simplicidad la vuelve útil para ejercicios básicos, como hacer parpadear un LED o mostrar una secuencia lineal sin entradas que cambien durante la espera.
El problema aparece cuando el circuito necesita hacer más de una cosa. Mientras delay() está activo, la placa no lee botones ni sensores, y tampoco actualiza otras salidas. Es una función bloqueante.
En un sistema robótico esa ceguera momentánea puede costar caro. Una pulsación puede pasar inadvertida o una respuesta puede llegar tarde simplemente porque el programa quedó detenido donde no debía.

Debes tener en cuenta que delay() es una función “bloqueante”. Durante el tiempo que dura la pausa, Arduino no puede leer botones, sensores ni realizar ninguna otra tarea.
millis() como alternativa no bloqueante
Frente a esa limitación, el texto presenta millis(), una función que permite consultar cuánto tiempo pasó desde que la placa arrancó, sin congelar el resto del programa.
La diferencia central está en la lógica: en vez de detenerse hasta que pase algo, el sistema guarda una referencia temporal y compara ese valor con el tiempo actual en cada vuelta del bucle principal (loop). Así decide si ya corresponde actuar.
Esto se conoce como programación no bloqueante. No implica que la placa trabaje en paralelo como una computadora multitarea, sino que deja de desperdiciar el tiempo de espera como un vacío.
El Informe retoma el clásico ejemplo del parpadeo de LED, ahora resuelto con millis(), para mostrar que el resultado visible puede ser igual al de delay(), pero la lógica que lo sostiene cambia por completo.

A diferencia de una pausa rígida, millis() permite medir intervalos de forma continua y mantener activo el comportamiento general del circuito mientras el tiempo sigue corriendo.
Convivencia de tareas en sistemas físicos
La parte final del Informe lleva la idea a un terreno más cercano a la robótica real: la convivencia de varias acciones temporizadas dentro del mismo programa.
Se desarrolla un ejemplo donde un LED parpadea según un intervalo definido por millis(), mientras un botón controla una segunda salida de forma independiente. Ninguna de las dos tareas bloquea a la otra.
A partir de ahí, el documento amplía el caso con una práctica que combina una señal periódica de estado con una salida temporizada que se activa ante una entrada y se apaga sola después de unos segundos, usando variables como “salidaActiva” para evitar reinicios indebidos.
El cierre plantea una idea que el Informe USERS marca como base para proyectos posteriores: un sistema físico no se define solo por la acción que ejecuta, sino por su capacidad de sostener varias condiciones de funcionamiento dentro del mismo tiempo real, sin perder atención sobre lo que ocurre alrededor.

El programa hará dos cosas al mismo tiempo: mantendrá una señal periódica de estado y, además, activará una segunda salida durante algunos segundos cuando detecte una entrada. Lo importante no es el efecto visual, sino la lógica que lo hace posible.
Encuentra la versión completa de la publicación en la que se basa este resumen, con todos los detalles técnicos en RedUSERS PREMIUM
También te puede interesar:
ESCUELA DE ROBÓTICA: PROGRAMAR PARA ROBÓTICA
Presentamos una nueva serie de publicaciónes bajo el nombre “paraguas” Escuela de ROBÓTICA. Mediante esta propuesta, buscamos guiar al lector en un recorrido teórico-práctico, cuidado, bien estructurado y que de lugar a la posibilidad de desarrollarse en un mundo creativo y lleno de posibilidades, en el que covergen la electrónica, el hardware y la programación.
Programar una placa Arduino para robótica no se reduce a escribir instrucciones: implica enseñarle al circuito a reaccionar según reglas.
Este Informe USERS recorre ese pasaje, desde la estructura básica de un programa hasta los distintos entornos que hoy ofrece el ecosistema Arduino para proyectos de robótica, automatización y control industrial.

Lee todo lo que quieras, donde vayas, contenidos exclusivos por una mínima cuota mensual. Solo en RedUSERS PREMIUM: SUSCRIBETE!



