En un código donde usas control de motores y dispositivos que deben captar "algo" para enviar una orden hay que hacer las cosas con mucha prolijidad aunque vaya a un sitio de internet y copie un código ese código no me asegura que está todo lo depurado que se requiere. Estoy escribiendo sin haberlo leído, cosa que haré ahora.
Me pongo a ver el programa y encuentro cosas primero en un idioma que no entiendo aunque traduje 2 o 3 sentencias no vale la pena el esfuerzo. Hazlo tu.
Bueno, evidentemente el código tiene muchos delay() o sea tiempos perdidos, y tiene loops como ese
do {} while(encoderPos<=405);
y me quedo corto... me encuentro que las indicaciones del Pixy conducen a cosas como esta
void Abat()
{
JATORRItikAP();
BIRAKETA();
APtikA1();
delay(5000); // Itxaroteko, gero kamara bidez objeturik ez dagoenenan gertatuko da.
KONTRABIRAKETA();
APtikA1();
BIRAKETA2();
JATORRItikAP();
KONTRABIRAKETA();
}
donde no solo cada uno tiene loop con delays de 1000 mseg sino que en el medio tienes otro delay() de 5 segundos. Todo estos son los tiempos a los que me refería.
Si no lo sabías delay() es una instrucción que DESTRUYE un programa como el tuyo donde esperas la acción de otros sensores Pixy, ultrasónico, etc.
Delay() solo sirve cuando la tarea es secuencial al punto que no importa si me detengo o no a hacer algo.