Bateau V1

OK, bon match !

Pour l'histoire du delay(3000), c'est pas aussi simple, il faudrait que je sache si c'est un temps mort de 3 secondes nécessaire à réorienter le bateau et pendant lequel on ne vérifie pas les distance et boutons ou s'il faut quand même le faire.

Dans le premier cas, le delay est pertinent, et on peut le conserver. Il faut cependant je pense mettre la commande du servo avant le delay : changer

  else if (!BtnContactG && cm > 5) { //contact et pas de son
    //contact SANS ultrason : le bateau est collé à un bord et le suit
    state = VirageGauche;
    delay (3000);  
    //  le bateau va dépasser l'angle saillant de la piscine :
    //  on le force à continuer à tourner encore pendant 3 sec
    //  pour le recoller au bord
    monServomoteur.write (135);
  }

en

  else if (!BtnContactG && cm > 5) { //contact et pas de son
    //contact SANS ultrason : le bateau est collé à un bord et le suit
    state = VirageGauche;
    monServomoteur.write (135);
    delay (3000);  
    //  le bateau va dépasser l'angle saillant de la piscine :
    //  on le force à continuer à tourner encore pendant 3 sec
    //  pour le recoller au bord
  }

et faire de même dans bordureDroite.

Dans le second cas, ça peut impliquer que si par exemple le bouton qui a fait contact ne touche plus le bord, on peut ne pas respecter cette durée de 3 secondes et passer à un autre état du bateau.

qu'en penses-tu ?