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

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]