Buenas, soy un estudiante de 17 años con un proyecto de robótica de Arduino entre manos. Queria saber que parte del codigo esta mal escrita Me gustaría que me ayudaseis ya que es la parte final del proyecto (trabajo que tengo que hacer en medio de exámenes) Si alguien me pudiera ayudar se lo agradecería mucho.
A continuación, adjunto el principio del código y un enlace con fotos del robot.
#include <Servo.h>
//Pin para motor A
const int MotorA1 = 6;
const int MotorA2 = 7;
//Pin para motor B
const int MotorB1 = 8;
const int MotorB2 = 9;
//Pin para sensor ultrasonico
const int trigger=10;
const int echo=11;
int leftscanval, centerscanval, rightscanval, ldiagonalscanval, rdiagonalscanval;
char choice;
const int distancelimit = 27; //Distancia limite a los objetos de delante
const int sidedistancelimit = 12; //Distancia minima en cm a los dos lados del robot
int distance;
int numcycles = 0;
char turndirection; //Gira derecha o izquierda depende de los objetos que haya
const int turntime = 900; //Tiempo que el robot gira
int thereis;
Servo head;
void setup(){
head.attach(5);
head.write(80);
pinMode(MotorA1, OUTPUT);
pinMode(MotorA2, OUTPUT);
pinMode(MotorB1, OUTPUT);
pinMode(MotorB2, OUTPUT);
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
}
void go(){ //Hacia delante
digitalWrite (MotorA1, HIGH);
digitalWrite (MotorA2, LOW);
digitalWrite (MotorB1, HIGH);
digitalWrite (MotorB2, LOW);
}
void backwards(){ //hacia atras
digitalWrite (MotorA1 , LOW);
digitalWrite (MotorA2, HIGH);
digitalWrite (MotorB1, LOW);
digitalWrite (MotorB2, HIGH);
}
void loop (){
}
int watch(){ //mirar con sensor
long howfar;
digitalWrite(trigger,LOW);
delayMicroseconds(5);
digitalWrite(trigger,HIGH);
delayMicroseconds(15);
digitalWrite(trigger,LOW);
howfar=pulseIn(echo,HIGH);
howfar=howfar*0.01657; //a que distancia en cm esta el objeto
return round(howfar);
}
void turnleft(int t){ //giro izquierda
digitalWrite (MotorA1, LOW);
digitalWrite (MotorA2, HIGH);
digitalWrite (MotorB1, HIGH);
digitalWrite (MotorB2, LOW);
delay(t);
}
void turnright(int t){ //giro derecha
digitalWrite (MotorA1, HIGH);
digitalWrite (MotorA2, LOW);
digitalWrite (MotorB1, LOW);
digitalWrite (MotorB2, HIGH);
delay(t);
}
void stopmove(){ //pararse de mover
digitalWrite (MotorA1 ,LOW);
digitalWrite (MotorA2, LOW);
digitalWrite (MotorB1, LOW);
digitalWrite (MotorB2, LOW);
}
void watchsurrounding(){ //Mide la distancia a derecha,izquierda,diagonal derecha,diagonal izquierda y centro y le asigna distancia en cm
centerscanval = watch();
if(centerscanval<distancelimit){stopmove();}
head.write(120);
delay(100);
ldiagonalscanval = watch();
if(ldiagonalscanval<distancelimit){stopmove();}
head.write(180);
delay(300);
leftscanval = watch();
if(leftscanval<sidedistancelimit){stopmove();}
head.write(135);
delay(100);
ldiagonalscanval = watch();
if(ldiagonalscanval<distancelimit){stopmove();}
head.write(90);
delay(100);
centerscanval = watch();
if(centerscanval<distancelimit){stopmove();}
head.write(45);
delay(100);
rdiagonalscanval = watch();
if(rdiagonalscanval<distancelimit){stopmove();}
head.write(0);
delay(100);
rightscanval = watch();
if(rightscanval<sidedistancelimit){stopmove();}
head.write(80); //Acaba de mirar a los lados
delay(300);
}
char decide(){
watchsurrounding();
if (leftscanval>rightscanval && leftscanval>centerscanval){
choice = 'l';
}
else if (rightscanval>leftscanval && rightscanval>centerscanval){
choice = 'r';
}
else{
choice = 'f';
}
return choice;
}
Muchas gracias