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