Alimentación de un robot esquiva odstaculos

vean el error o problema que tengo es que estoy en un proyecto de un robot esquiva odstaculos pero no se cuantas baterias deberia meterle porque ya e probado con barias y no ruedan las ruedas y ya porbe las ruedas y estan vien bueno este es el proyecto



vean esas son las fotots y este es el codigo:


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

#define TRIG_PIN A5
#define ECHO_PIN A4 
#define MAX_DISTANCE 200 
#define MAX_SPEED 150 // 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 motor3(3, 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);
  motor3.run(RELEASE);

  } 
  
void moveForward() {

 if(!goesForward)
  {
    goesForward=true;
    motor1.run(FORWARD);      
    motor2.run(FORWARD);
    motor3.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);
    motor3.setSpeed(speedSet);
 
    delay(5);
   }
  }
}
void parar_servos (){
  myservo.write(90);
}
void moveBackward() {
    goesForward=false;
    motor1.run(BACKWARD);      
    motor2.run(BACKWARD);
    motor3.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);
    motor3.setSpeed(speedSet);
    
    delay(5);
  }
}  

void turnRight() {
  motor1.run(FORWARD);
  motor2.run(BACKWARD);
  motor3.run(RELEASE);
     
  delay(500);
  motor1.run(FORWARD);      
  motor2.run(FORWARD);
  motor3.run(FORWARD);
     
} 
 
void turnLeft() {
  motor1.run(BACKWARD);     
  motor2.run(FORWARD);  
  motor3.run(RELEASE);
   
  delay(500);
  motor1.run(FORWARD);     
  motor2.run(FORWARD);
  motor3.run(FORWARD);
 
}   
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 150 // 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 motor3(3, 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);
  motor3.run(RELEASE);

  } 
  
void moveForward() {

 if(!goesForward)
  {
    goesForward=true;
    motor1.run(FORWARD);      
    motor2.run(FORWARD);
    motor3.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);
    motor3.setSpeed(speedSet);
 
    delay(5);
   }
  }
}
void parar_servos (){
  myservo.write(90);
}
void moveBackward() {
    goesForward=false;
    motor1.run(BACKWARD);      
    motor2.run(BACKWARD);
    motor3.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);
    motor3.setSpeed(speedSet);
    
    delay(5);
  }
}  

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

ayuda por favor es un proyecto que tengo que entregar en 6 dias

¿Dónde está la fuente de alimentación?

  1. Formatee el código en el IDE.
  2. Haga clic en el botón < CODE > en la ventana de mensajes.
  3. Pega tu código donde veas '''escribe o pega tu código aquí''' (type or paste your code here)

El resultado se ve así:

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

#define TRIG_PIN A5
#define ECHO_PIN A4
#define MAX_DISTANCE 200
#define MAX_SPEED 150 // 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 motor3(3, 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);
  motor3.run(RELEASE);
}

void moveForward() {
  if (!goesForward)
  {
    goesForward = true;
    motor1.run(FORWARD);
    motor2.run(FORWARD);
    motor3.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);
      motor3.setSpeed(speedSet);
      delay(5);
    }
  }
}

void parar_servos () {
  myservo.write(90);
}

void moveBackward() {
  goesForward = false;
  motor1.run(BACKWARD);
  motor2.run(BACKWARD);
  motor3.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);
    motor3.setSpeed(speedSet);
    delay(5);
  }
}

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

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

pero la alimentacion es por la entrada de la placa l293d no se cuanto le puedo poner para que funcione cuantos voltios y amperios nesesito

es que soy nuevo en esto

La fuente de alimentación venía con el kit. Mira las instrucciones.

yo no compre kit yo lo arme solo

No, no lo hiciste. Sabría tener la fuente de alimentación correcta.

Veo el disco discográfico.

Cada motor es probablemente de 3 V CC a 6 V CC. 1.5A... por lo que desea una batería 5xAA (4 x 1.5vdc = 6vdc)

5 baterias AA?

recuerda que son 3 motores dc un crevo motor y un sensor ultrasonico

El escudo de su motor se hundirá casi dos voltios... así que tal vez 6 x AA = 6 x 1.5 = 9vdc - 2 vdc perdidos = 7 vdc. ¿Qué dice la escritura en el escudo del motor?

Aquí hay un sitio web con L293D (motor shield) instrucciones, incluida la fuente de alimentación...

https://www.codemahal.com/4wd-car-using-l293d-motor-shield

Gracias boy a ver si me sirve muchas gracias

y si le vajo la velosidad a los motores me podria consumir menos?

Sí.

Para @jesjos

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 (<CODE/>)




También edita el titulo de acuerdo al punto 5 de las normas.
Quita el "Ayuda con.." y coloca algo mas genérico.

No sigas respondiendo sin corregir

Ya lo hice es asi?

Moderador:
Y el título? Quita "Necesito ayuda.. "

no se a solucionado el problema las ruedas m1 y m2 van demaciado lentas y arancan es si las empujo

¿Obtuvo una fuente de alimentación del tamaño adecuado?

Moderador
Acaso jesjos no leíste lo que te pedí que hicieras en el post#14?

You started a second topic with the same subject.