Libreria multiproceso para arduino

Hola buenas tardes.

Mi nombre es Miguel y estoy elaborando un pequeño proyecto para el grado superior, donde estamos desarrollando la programación y funcionamiento de un pequeño robot para una competición de sumo.

Tengo bastante desarrollo en la programación de Arduino, como las señales de los sensores que incorpora (unos sensores CNY70 para detectar las líneas del perímetro, unos sensores SHARP y HC-SR04 que determinan la distancia a la que se encuentra el rival en los cuatro puntos cardinales) y que incorpora elementos complejos como una shield L298N para controlar los motores DC de las ruedas.

Tengo desarrolladas las pautas de movimiento de los motores (ordenes básicas de mover hacia adelante, hacia atrás, rotar 90º, maniobras de evasión, control de orientación) pero encuentro un problema relativamente sustancial, y es el delay que hay desde la primera función que se ejecuta, como es el primer CNY70, hasta el ultimo sensor como es un ultrasonidos del lateral.

Tengo entendido de la existencia de algunas librerias, desconozco cuales o como se usan, que simulan una especie de multitarea con arduino, optimizando un poco estos tiempos y permitiendo un funcionamiento más óptimo de las señales. Además, me permite gestionar las señales de los sensores mientras funcionan los motores, para permitir cambiar su actuación a la par que se mueve, y no esperar a la ejecución de la tarea antes de volver a hacer la lectura de sensores.

He trabajado en algunos proyectos más básicos con la función millis() que resulta muy util para hacer trabajos de este tipo, pero no encuentro forma de configurarlo sin hacer un código extenso.

Por eso vengo buscando ayuda, a ver si alguien me puede sugerir una libreria sencilla con la que configurar una ejecución simultanea de las señales de los sensores junto con el funcionamiento de los motores, estoy abierto a cualquier sugerencia. El tiempo es reducido, de unos 10-12 dias para presentarlo, asi que cualquier ayuda se agradece.

Un saludos y gracias de antemano.

Espero que esto te sirva de ayuda, aunque yo aun estoy tratando de entenderlo, las demostraciones que visto funcionan muy bien.

Libreria protothreads.

Como soy nuevo no tengo claro que links, se pueden poner, pero hay un vídeo en castellano que lo explican bien.

Todo lo que hagas con millis() te dará libertad como para imaginar que arduino esta haciendo muchas cosas cuando la verdad es que sigue haciendo lo que puede que es correr un programa secuencial pero como no se encuentra con ningún delay() entonces la sensación de fluidez es total.
millis() y máquinas de estado es la respuesta a lo que quieres hacer.

Ve a documentación => indice de temas tutoriales => máquina de estados por un lado y millis() por otro.

Doble posteo.
Presta atención mitebu y lee las normas del foro.