Robot casi acabado!

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