et le deuxième partie
void checkDirectionVersBordure () {
Serial.println("checking direction");
if (ObsticalAhead == true) { // on a un bord devant, on s'arrête et on regarde à gauche
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, pas de bord. 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é gauche 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, bouée dans la piscine par exemple
nextStep = TurnAround;
myservo.write(90);//RAZ de la position du servo
delay(300);
Serial.println("Next step is on evite");
}
}
}
else {
nextStep = Forward; //Pas d'obstacle devant , on avance
}
}
void drive() {
switch (nextStep) {
case Forward:
leftMotor.Drive(255);
rightMotor.Drive(255);
Serial.println("Forward");
break;
case TurnLeft:
leftMotor.Drive(-255);
rightMotor.Drive(255);
Serial.println(" TurnLeft");
delay(400);
break;
case TurnRight:
leftMotor.Drive(255);
rightMotor.Drive(-255);
Serial.println(" TurnRight");
delay(400);
break;
case TurnAround:
leftMotor.Drive(255);
rightMotor.Drive(-255);
Serial.println(" TurnAround");
delay(600);
break;
case Brake:
leftMotor.Drive(-255);
rightMotor.Drive(-255);
delay(1500);
leftMotor.Drive(0);
rightMotor.Drive(0);
Serial.println(" stopped");
}
}
[/code]