Procesos Paralelos

Hola que tal comunidad Arduino este es mi primer post espero que me podáis ayudar.

Tengo un 4WD Pirate Frame con sus 4 motores y una placa Romeo V2 que trabaja con Arduino Leonardo tengo ahora mismo una batería de 11v lipo montada con 2 servos y 2 sensores de distancia uno por IR y otro por ultrasonido estoy trasteando por primera vez con arduino y vengo de programar mucho java y PHP y he tocado poco programación a este nivel di varios años de C++ pero el paradigma en el que me especialice permite multi hilos y orientación a objetos, con lo cual me surgen dudas en arduino, como todos sabréis arduino funciona con un loop y repite lo que esta ahí infinitamente, mi cuestión es yo le indico a los motores que se ponga a un velocidad y dirección esa orden se repite en cada bucle, ahora bien he puesto un servo con un sensor de ultrasonido que hace barridos en todos los ángulos del servo y me gustaría a la vez que esta avanzando hacer el barrido del servo y analizar los resultados para cambiar el comportamiento de los motores, parar girar etc he visto que mucha gente que para el rover y hace el proceso del barrido analiza los datos y continua pero como podría hacer para que avanzara y moviese el servo y analizara los resultados del sensor sin detenerse al menos que se le solicite, saludos. :slight_smile:

Hola michelkum, bienvenido al foro. Muy seguido aparece en el foro dudas coma la tuya, personas preguntando por el multihilo y procesos en paralelo, y en el99% de los casos se trata de un mal diseño de funciones. En la mayoría de los casos programan por separado cada movimiento utilizando delays y otras estructuras bloqueantes , luego al unirlas no funcionan como esperaban. Es totalmente factible programar diferentes operaciones que pasan en secuencia , pero para al observador parecer que se efectúan en paralelo.
Además arduino soporta orientación a objetos.
Saludo.

Crea una máquina de estados o bien mira el ejemplo BlinkWithoutdelay.ino presente en el IDE.
En ese ejemplo se usa la funcion millis() que se encarga de llevar la cuenta en milisegundos y compararla con momentos que sirvan de disparo a un evento X.

Tu puedes leer sensores, leer pulsadores, teclados, actualizar LCD o TFT y ejecutar tareas que involucren motores sin usar un solo delay que detiene la ejecución del programa.