A vrai dire je ne comprends pas bien tes explications ni tes dessins. Je vois 2 solutions :
La plus simple : les moteurs sont inversés. Il suffit d'échanger les définitions dans l'entête du programme :
const int moteur_D = 5; // le numero du pin du moteur droit
const int moteur_G = 11;
devient
const int moteur_D = 11; // le numero du pin du moteur droit
const int moteur_G = 5;
Sinon, c'est un peu plus compliqué, mais la structure du programme, avec les états, fait que c'est très simple à modifier. Tu peux le faire toi-même, c'est très simple.
Il faut d'abord vérifier que les états sont bien définis. Exemple :
void ADroite () { // Virage droite
Serial.println("Moteur droit OFF, gauche ON : fait tourner a droite");
digitalWrite(moteur_D, LOW);
digitalWrite(moteur_G, HIGH);
if (PompeG) digitalWrite(PompeGauche, HIGH);
}
C'est les instructions de l'état 'VirageDroite'. Tu vérifies que l'action se fait correctement sur les digitalWrite (le bon moteur pour le bon virage) et que le message affiché sur la console est correct.
Ensuite, il faut vérifier que les tests choisissent les bons états. Par exemple, dans PleinEau() :
else if (!BtnContactG || VirageD)
{ // Contact bouton gauche
if (VirageD) Serial.println("Contact a gauche ! ");
if (millis() - chrono2 < delaiVirage)
{
state = VirageGauche;
VirageD = true;
}
else
{
state = AvantToute;
Serial.println("Avant toute");
VirageD = false;
chrono2 = millis();
}
}
Le contact du bouton gauche lance ici un virage à gauche. S'il faut un virage à droite, il suffit de changer le nom de l'état choisi : 'VirageGauche' devient 'VirageDroite'. C'est tout simple, mais tu connais cette mécanique mieux que moi, donc c'est plus simple pour toi