Un Else if qui pose problème BOB
Dans mon programme j'utilise des "Else if" pour diriger et donner des ordres à mon robot. Avance, recule, etc...
Un en particulier pose un problème car il ne veut pas faire ce que je lui demande. Lorsque je lui demande de revenir il ne fait qu'une partie de l'ordre.
Dans le prog je lui dit de faire demi-tour et avancer, mais il ne fait que le demi-tour et s'arrete. J'ai essayé un tas de choses mais il ne veut rien savoir.
Voir PARTI DU CODE QUI POSE PROBLEME
Tous les autres ordres fonctionnent mai pas celui-ci. Je vous mets la partie du code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
//***********************************************
//* LOOPING *
//***********************************************
void loop()
{
while (Serial.available())
{
delay (2); // lecture car par car
char c = Serial.read();
messageRecu += c;
}
if (messageRecu.length() > 0)
{
if ((messageRecu.indexOf("recule") != -1)) { // marche arrière
Serial.println("recule");
stopp(); recul(); delay(1000); stopp();
messageRecu = "";
}
else if ((messageRecu.indexOf("bâbord") != -1)) { // moteur stop
Serial.println("quart-de-tour à gauche");
turnG(); delay(600); stopp();
messageRecu = "";
}
else if ((messageRecu.indexOf("tribord") != -1)) { // moteur stop
Serial.println("quart-de-tour à droite");
turnD(); delay(600); stopp();
messageRecu = "";
}
else if (((messageRecu.indexOf("demi-tour gauche") != -1)) || ((messageRecu.indexOf("retourne gauche") != -1))) { // demi-tour gauche
Serial.println("demi-tour gauche");
turnG(); delay(2600); stopp();
messageRecu = "";
}
else if (((messageRecu.indexOf("demi-tour droite") != -1)) || ((messageRecu.indexOf("retourne droite") != -1))) { // demi-tour droite
Serial.println("demi-tour droite");
turnD(); delay(2600); stopp();
messageRecu = "";
}
else if ((messageRecu.indexOf("reviens") != -1)) { // Demi-tour et reviens
Serial.println("reviens");
stopp(); turnD(); delay(2600); stopp(); avance(); // PARTI DU CODE QUI POSE PROBLEME
messageRecu = "";
}
else if ((messageRecu.indexOf("gauche") != -1)) { // tourne à gauche brièvement
Serial.println ("a gauche");
turnG(); delay(100); stopp();
messageRecu = "";
}
else if ((messageRecu.indexOf("droite") != -1)) { //tourne à droite brièvement
Serial.println("a droite");
turnD(); delay(100); stopp();
messageRecu = "";
}
else if (((messageRecu.indexOf("stoppe") != -1)) || ((messageRecu.indexOf("stop") != -1)) || ((messageRecu.indexOf("arrête") != -1)) || ((messageRecu.indexOf("bouge plus") != -1))) { // moteur stop
Serial.println("stop"); stopp();
// Transmission etat LED Rouge
Wire.beginTransmission(0x02); // Envoyer vers device #Led
Wire.write(2); // Envoi un 2
Wire.endTransmission(0x02); // Arreter la transmission
delay(1000);
// Transmission etat LED Eteint
Wire.beginTransmission(0x02); // Envoyer vers device #Led
Wire.write(0); // Envoi un 0
Wire.endTransmission(0x02); // Arreter la transmission
messageRecu = "";
}
else if (((messageRecu.indexOf("demi-tour à gauche") != -1)) || ((messageRecu.indexOf("demi-tour gauche") != -1)) || ((messageRecu.indexOf("reviens") != -1))) { // moteur stop
Serial.println("demi-tour gauche");
turnG(); delay(2600);
messageRecu = "";
}
else if (((messageRecu.indexOf("demi-tour à droite") != -1)) || ((messageRecu.indexOf("demi-tour droite") != -1)) || ((messageRecu.indexOf("reviens") != -1))) { // moteur stop
Serial.println("demi-tour droite");
turnD(); delay(2600);
messageRecu = "";
}
else if ((messageRecu.indexOf("repos") != -1)) { // marche avant
Serial.println("repos");
Qest_capt_B(); stopp();
// Transmission etat LED Eteint
Wire.beginTransmission(0x02); // Envoyer vers device #Led
Wire.write(0); // Envoi un 0
Wire.endTransmission(0x02); // Arreter la transmission
delay(5000); //les instructions à répéter tant que la condition est vérifiée
messageRecu = "";
}
else if (((messageRecu.indexOf("avance") != -1)) || ((messageRecu.indexOf("go") != -1)) || ((messageRecu.indexOf("vas-y") != -1)) || ((messageRecu.indexOf("viens ici") != -1))) {
Serial.println("avance");
onyva(); //les instructions à répéter tant que la condition est vérifiée
}
else if ((messageRecu.indexOf("manuel") != -1)) { // marche avant
Serial.println (messageRecu);
Qest_capt_B();
if (((dist_AVCGB < 3) || (dist_AVGB < 3)) || ((dist_AVCDB < 3) || (dist_AVDB < 3)) ||
((dist_AVCH < 10) || (dist_COL_F < 10) || (dist_TETE_F < 10))
)
{
recul(); delay(150); stopp();
messageRecu = "stop";
messageRecu = "";
}
else
{
avance(); //les instructions à répéter tant que la condition est vérifiée
}
} |
Quelqu'un à une idée, merci
Cordialement