Arduino esquiva obstáculos

Hola, tengo problemas para terminar el programa de mi robot esquiva obstáculos, si alguien me puede ayudar se lo agradecería. Consta de 3 ultrasonidos, uno en frente y los otros 2 a los costados, 2 motores con ruedas, 4 pilas, 1 regulador de tensión, 1 swich, una placa de prueba mediana y por ultimo una placa Arduino UNO. El problema que tengo con el código es que quiero que pueda girar para el lado donde haya mas distancia en lugar de solo para un sentido. Hasta ahora el robot esquiva pero siempre para el mismo sentido.
No tuve tiempo a poner los comentarios, este trabajo lo tengo que presentar hoy y estoy desesperado :frowning:

int TRIG1 = 6;
int ECHO1 = 7;

int DURACION1;
int DISTANCIA1;

int TRIG2 = 2;
int ECHO2 = 3;

int DURACION2;
int DISTANCIA2;

int TRIG3 = 4;
int ECHO3 = 5;

int DURACION3;
int DISTANCIA3;

int VELOCIDAD;

int IN1 = 12;
int IN2 = 13;
int ENA = 11;

int IN4 = 8;
int IN3 = 9;
int ENB = 10;

void setup() {
  pinMode (TRIG1, OUTPUT);
  pinMode (ECHO1, INPUT);
  }
  void loop (){ 
    
    VELOCIDAD = (170);

    
    digitalWrite (TRIG1, HIGH);
    delay (1);
    digitalWrite (TRIG1, LOW);

    DURACION1 = pulseIn (ECHO1, HIGH);
    DISTANCIA1 = DURACION1 / 58.2;

         
    if (( ( DISTANCIA1 ) >= (8) )) {
    abAvance (VELOCIDAD);
    }
  
    else {
    detieneAmbos ();
    delay (1000);
    aAvance (VELOCIDAD);
    delay (750);
    }    
  }
    void abAvance (int veloc) {
    digitalWrite (IN4, HIGH);
    digitalWrite (IN3, LOW);
    analogWrite (ENB, veloc);
    
    digitalWrite (IN1, HIGH);
    digitalWrite (IN2, LOW);
    analogWrite (ENA, veloc); 
    }

    void aAvance (int veloc) {
    digitalWrite (IN4, LOW);
    digitalWrite (IN3, HIGH);
    analogWrite (ENB, veloc);

    digitalWrite (IN1, HIGH);
    digitalWrite (IN2, LOW);
    analogWrite (ENA, veloc);
    }
      
    void bAvance (int veloc) {
    digitalWrite (IN1, LOW);
    digitalWrite (IN2, HIGH);
    analogWrite (ENA, veloc);

    digitalWrite (IN4, HIGH);
    digitalWrite (IN3, LOW);
    analogWrite (ENB, veloc);
    }

    void detieneAmbos () {
    analogWrite (ENA, 0);
    analogWrite (ENB, 0);
    }
    
    void miraIzquierda(){
    digitalWrite (TRIG2, HIGH);
    delay (1);
    digitalWrite (TRIG2, LOW);

    DURACION2 = pulseIn (ECHO2, HIGH);
    DISTANCIA2 = DURACION2 / 58.2;
    }
    
    void miraDerecha () {
    digitalWrite (TRIG3, HIGH);
    delay (1);
    digitalWrite (TRIG3, LOW);
    
    DURACION3 = pulseIn (ECHO3, HIGH);
    DISTANCIA3 = DURACION3 / 58.2;
    }

Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.

Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>


Debes prestar atención a donde posteas y con que idioma debes hacerlo.
Han movido tu hilo porque posteaste en el foro en inglés usando español.
Ten mas cuidado.
Ahora edita el código como te pido al comienzo.