Bateau autonome Coller aux parois d'une piscine 1/2

code à partir d'une voiture

Voici la boucle loop

void loop() {
 // on regarde la distance, puis on choisit la direction et on roule
checkDistance();
checkDirection();
drive();
}

Dans mon code du 1° bateau j'ai

void loop() { //deux temporisations distinctes, donc deux chronos différents :

  long tempsEcoule = millis() - startMillis;
  long tempsEcouleAvantPause = millis() - startMillis;
  if (tempsEcoule < 600000) MouvementPleineEaux();      // 10 mn * 60 * 1 000
  else if (tempsEcoule < 1200000) bordureGauche();      // 20 mn * 60 * 1 000
  else if (tempsEcoule < 1800000) MouvementPleineEaux();// 30 mn * 60 * 1 000
  else if (tempsEcoule < 2400000) bordureDroite();      // 40 mn * 60 * 1 000
  else if (tempsEcouleAvantPause > 3600000) pause();    // 60 mn * 60 * 1 000après 60 mn de fonctionnement mise en pause
  else startMillis = millis();

  delay (100);
}

Je modifie le code de cette façon pour avoir 10 mn de déplacement aléatoire tel que dans le code de la voiture. puis 10 mn en se collant sur les bords puis après 20 mn de fonctionnement on met en pause pendant 15 mn

void loop() { //deux temporisations distinctes, donc deux chronos différents :

  long tempsEcoule = millis() - startMillis;
  long tempsEcouleAvantPause = millis() - startMillis;
checkDistance()
  if (tempsEcoule < 600000) checkDirection();      // 10 mn * 60 * 1 000
drive();

  else if (tempsEcoule < 1200000) checkDirectionVersBordure();      // 20 mn * 60 * 1 000
drive();

  else if (tempsEcouleAvantPause > 1800000) pause();    // 30 mn * 60 * 1 000 après 30 mn de fonctionnement mise en pause

  else startMillis = millis();

  delay (100);
}

La fonction d'origine et la fonction ajoutée : par rapport à l'originale, si je détecte un obstacle , je me dirige vers lui

void checkDirection(){
Serial.println("checking direction");
if(ObsticalAhead ==true){
nextStep = Brake;
drive();
myservo.write(180); // servo va à  180° pour la gauche
delay(400); // attente 15ms pour que le servo aille à la position
checkDistance();

// là on regarde la gauche
if(ObsticalAhead ==false){// si ObstacleDevant est faux donc si le coté gauche est libre, on y va en tournant à gauche
nextStep = TurnLeft;
Serial.println("Next step is TurnLeft");
myservo.write(90);//RAZ de la position du servo
delay(400);
}
else{// à gauche, c'est bloqué. On doit regarder à droite                
myservo.write(0); // servo va à  0° pour la droite 
delay(800); // attente 15ms pour que le servo aille à la position
checkDistance();


// là on regarde la droite
if(ObsticalAhead ==false){// si ObstacleDevant est faux donc si le coté droit est libre, on y va en tournant à droite
nextStep = TurnRight;
Serial.println("Next step is TurnRight");
myservo.write(90);//RAZ de la position du servo
delay(400);
}
else{//Alors ObstacleDevant est vrai, on doit tourner autour
nextStep = TurnAround;
myservo.write(90);//RAZ de la position du servo
delay(300);
Serial.println("Next step is TurnAround");
}
}
 
}
else{nextStep = Forward;}//Pas d'obstacle devant , on avance
}

void checkDirectionVersBordure (){
Serial.println("checking direction");
if(ObsticalAhead ==true){
nextStep = Brake;
drive();
myservo.write(180); // servo va à  180° pour la gauche
delay(400); // attente 15ms pour que le servo aille à la position
checkDistance();

// là on regarde la gauche
if(ObsticalAhead ==true){// si ObstacleDevant est vrai donc si le coté gauche détecté, on s'y dirige
nextStep = TurnLeft;
Serial.println("Next step is TurnLeft");
myservo.write(90);//RAZ de la position du servo
delay(400);
}
else{// à gauche, c'est bloqué. On doit regarder à droite                
myservo.write(0); // servo va à  0° pour la droite 
delay(800); // attente 15ms pour que le servo aille à la position
checkDistance();


// là on regarde la droite
if(ObsticalAhead ==true){// si ObstacleDevant est vrai donc si le coté droit détecté, on s'y dirige
nextStep = TurnRight;
Serial.println("Next step is TurnRight");
myservo.write(90);//RAZ de la position du servo
delay(400);
}
else{//Alors ObstacleDevant est vrai, on doit tourner autour Aucun bord détecté, obstacle au milieu de la piscine 
nextStep = TurnAround;
myservo.write(90);//RAZ de la position du servo
delay(300);
Serial.println("Next step is TurnAround");
}
}
 
}
else{nextStep = Forward;}//Pas d'obstacle devant , on avance
}

Le code est validé ?