Introducción Cuando nos iniciamos en la programación con Arduino , la forma más sencilla e intuitiva de introducir pausas en el código es recurrir a la función delay() . Por ejemplo, ejecutar delay(1000); detiene el flujo del programa durante un segundo. Sin embargo, en proyectos más avanzados, delay() presenta un inconveniente crítico: bloquea por completo el procesador . Mientras se ejecuta un delay() , el microcontrolador queda congelado. No puede leer sensores, atender pulsadores ni procesar comunicaciones serie. Para solucionar esta limitación existe la función millis() , que permite implementar temporizadores no bloqueantes y lograr una multitarea real. ⚠️ El Problema del Bloqueo por delay() La función delay() detiene la ejecución del bucle principal loop() . Si estás diseñando un sistema de seguridad o un robot que requiera respuesta inmediata ante un obstáculo, el uso de delay() provocará retardos inaceptables (lag) en las lecturas de los sensores. Materiales...