Robot esquiva obstáculos falta de potencia

necesito ayuda con mi proyecto se trata de un robot esquiva ostaculos el cual tiene una vateria de 9v ,un controlador l293d, un sensor ultrasonico ,un servo y motor 4 ruedas lo que pasa es que las ruedas asen un sonido extraño y si pongo una sola osea m1 arranca la rueda pero si la empujo y rueda muy lento aqui les dejo las fotos y el codigo ese proyecto lo tengo que terminar en 7 dias


escribe o pega el código aquí#include <AFMotor.h>  
#include <NewPing.h>
#include <Servo.h> 

#define TRIG_PIN A5
#define ECHO_PIN A4 
#define MAX_DISTANCE 200 
#define MAX_SPEED 200 // sets speed of DC  motors
#define MAX_SPEED_OFFSET 20

NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE); 

AF_DCMotor motor1(1, MOTOR12_1KHZ); 
AF_DCMotor motor2(2, MOTOR12_1KHZ);
AF_DCMotor motor4(4, MOTOR34_1KHZ);

Servo myservo;   

boolean goesForward=false;
int distance = 100;
int speedSet = 0;
int ft(A1);
int valorft=0;
int led(A2);
void setup() {

  myservo.attach(10);  
  myservo.write(90); 
  
  pinMode(ft, INPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
  delay(2000);
  distance = readPing();
  delay(100);
  distance = readPing();
  delay(100);
  distance = readPing();
  delay(100);
  distance = readPing();
  delay(100);
}

void loop() {
 int distanceR = 0;
 int distanceL =  0;
 delay(40);
 valorft=analogRead(ft);
Serial.println(valorft);
 if(valorft <870){
  digitalWrite(led, HIGH);
  }else{
    digitalWrite(led, LOW);
    } 
 if(distance<=30)
 {
  moveStop();
  delay(100);
  moveBackward();
  delay(300);
  moveStop();
  delay(200);
  distanceR = lookRight();
  delay(200);
  distanceL = lookLeft();
  delay(200);

  if(distanceR>=distanceL)
  {
    turnRight();
    moveStop();
  }else
  {
    turnLeft();
    moveStop();
  }
 }else
 {
  moveForward();
 }
 distance = readPing();
}

int lookRight()
{
    myservo.write(86); 
    delay(460);
    parar_servos();
    int distance = readPing();
    delay(100);
    myservo.write(96);
    delay(460);
    parar_servos();
    return distance;
}

int lookLeft()
{
    myservo.write(100); 
    delay(470);
    parar_servos();
    int distance = readPing();
    delay(100);
    myservo.write(86); 
    delay(450);
    parar_servos();
    return distance;
    delay(100);
}

int readPing() { 
  delay(70);
  int cm = sonar.ping_cm();
  if(cm==0)
  {
    cm = 250;
  }
  return cm;
}

void moveStop() {
  motor1.run(RELEASE); 
  motor2.run(RELEASE);
  motor4.run(RELEASE);

  } 
  
void moveForward() {

 if(!goesForward)
  {
    goesForward=true;
    motor1.run(FORWARD);      
    motor2.run(FORWARD);
    motor4.run(FORWARD); 
        
   for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly
   {
    motor1.setSpeed(speedSet);
    motor2.setSpeed(speedSet);
    motor4.setSpeed(speedSet);
 
    delay(5);
   }
  }
}
void parar_servos (){
  myservo.write(90);
}
void moveBackward() {
    goesForward=false;
    motor1.run(BACKWARD);      
    motor2.run(BACKWARD);
    motor4.run(BACKWARD);
    
  for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly
  {
    motor1.setSpeed(speedSet);
    motor2.setSpeed(speedSet);
    motor4.setSpeed(speedSet);
    
    delay(5);
  }
}  

void turnRight() {
  motor1.run(FORWARD);
  motor2.run(BACKWARD);
  motor4.run(RELEASE);
     
  delay(500);
  motor1.run(FORWARD);      
  motor2.run(FORWARD);
  motor4.run(FORWARD);
     
} 
 
void turnLeft() {
  motor1.run(BACKWARD);     
  motor2.run(FORWARD);  
  motor4.run(RELEASE);
   
  delay(500);
  motor1.run(FORWARD);     
  motor2.run(FORWARD);
  motor4.run(FORWARD);
 
}

7 posts were merged into an existing topic: Alimentación de un robot esquiva odstaculos