Carro que evade obstáculos

Hola buenas tardes, soy nuevo en esta plataforma y estoy programando un carro que evade obstáculos, pero tengo un problema y no se por que, lo que pasa es que al conectarlo, solo avanza hacia atrás, si alguien podría ayudarme, se lo agradecería mucho, adjunto el codigo

#include <Servo.h> 
#include <NewPing.h>
#include <AFMotor.h>  


NewPing Dist(A0, A1, 200); //(trig,echo,dist max)
Servo myServo; 


int distancia = 0;
int distanciaD = 0;
int distanciaIz = 0;
boolean Booleano = false;


AF_DCMotor Motor1(1, MOTOR12_1KHZ); 
AF_DCMotor Motor2(2, MOTOR12_1KHZ);
AF_DCMotor Motor3(3, MOTOR34_1KHZ);
AF_DCMotor Motor4(4, MOTOR34_1KHZ);


void setup() {
  Serial.begin(9600);
  myServo.attach(10);  
  myServo.write(115);
  delay(1000); 
  myServo.write(65);
  delay(500);
  myServo.write(160);
  delay(500);
  myServo.write(115);
}


void loop() {
distancia = medirDistancia();
if (distancia >= 25 && distancia <= 250)
{
  Adelante();
  Serial.println("MIRANDO HACIA DELANTE CON DISTANCIA DE:"+ String(distancia));
}
else if (distancia < 25)
{
  Frenar();
  delay(150);
  Reversa();
  delay(250);
  Frenar();
  delay(250);
  distanciaD = mirarDerecha();
  delay(250);
  distanciaIz = mirarIzquierda();
  delay(250);


  if(distanciaD >= distanciaIz)
    {
      GirarDerecha();
      Frenar();
    }
    else if(distanciaIz >= distanciaD)
    {
      GirarIzquierda();
      Frenar();
    }
  }
}


int mirarDerecha()
{
    myServo.write(60); 
    delay(350);
    int distancia = medirDistancia();
    Serial.println("MIRANDO HACIA LA DERECHA CON DISTANCIA DE:"+ String(distancia));
    return distancia;
}


int mirarIzquierda()
{
    myServo.write(165); 
    delay(350);
    int distancia = medirDistancia();
    delay(50);
    myServo.write(115); 
    Serial.println("MIRANDO HACIA LA IZQUIERDA CON DISTANCIA DE:"+ String(distancia));
    return distancia;
}


  int medirDistancia() 
  { 
    delay(10);
    int ditanciaCM = Dist.ping_cm();
    if(ditanciaCM <= 0 || ditanciaCM >= 250)
    {
      ditanciaCM = 250;
    }
    return ditanciaCM;
  }


void Frenar() {
  Motor1.run(RELEASE); 
  Motor2.run(RELEASE);
  Motor3.run(RELEASE);
  Motor4.run(RELEASE);
  Serial.println("FRENANDO");
 } 
  
void Adelante() {
 if(Booleano == false)
  {
    Booleano = true;
    Motor1.run(FORWARD);      
    Motor2.run(FORWARD);
    Motor3.run(FORWARD); 
    Motor4.run(FORWARD);
    Serial.println("IR A DELANTE");     
    controlVelocidad();
  }
}


void Reversa() {
    Booleano = false;
    Motor1.run(BACKWARD);      
    Motor2.run(BACKWARD);
    Motor3.run(BACKWARD);
    Motor4.run(BACKWARD);  
    Serial.println("REVERSA");
    controlVelocidad();
}  


void GirarDerecha() {
  Motor1.run(FORWARD);
  Motor2.run(FORWARD);
  Motor3.run(BACKWARD);
  Motor4.run(BACKWARD);  
  Serial.println("GIRAR HACIA LA DERECHA");   
  delay(400);  
} 
 
void GirarIzquierda() {
  Motor1.run(BACKWARD);     
  Motor2.run(BACKWARD);  
  Motor3.run(FORWARD);
  Motor4.run(FORWARD);   
  Serial.println("MIRANDO HACIA LA IZQUIERDA");
  delay(400);
} 


 void controlVelocidad(){
   for (int velocidad = 0; velocidad < 160; velocidad +=2) 
   {
      Motor1.setSpeed(velocidad);
      Motor2.setSpeed(velocidad);
      Motor3.setSpeed(velocidad);
      Motor4.setSpeed(velocidad);
      delay(3);
   }
  }

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

Disculpa, No entendí tu respuesta

Deberías aclarar que sensores tiene y como están montados en tu carro. Pero ya te adelanto que tu problema son los delays. Tienes funciones anidadas,como medirdistanciaizq o medirdistanciader, que usan delays y bloquean tu código. Además deberías monitorizar que retorna de la función medirdistancia.
Saludos