Problème ultason bluetooth

Bonjour, j'ai un petit soucis avec mon projet. J'ai pour projet de reproduire avec quelques plus le robot Scott de la machinerie. Voilà le problème est que j'ai ajouté en plus du module ultrason de base un module bluetooth pour pouvoir le contrôler à distance. J'ai donc ajouté des valeurs numérique pour envoyer au module pour exécuter les ordres et j'ai ajouté une valeur pour le module ultrason. Donc le robot est censé fonctionné en ultrason quand je lui demande. Le problème est qu'il recule et ensuite avance non-stop et ne détecte rien. Le montage + codage avec ultrason uniquement fonctionne ce n'est donc pas ces causes la. Voici le code merci d'avance.

byte serialA; // variable de reception de donnée via RX
//----------------------------------------------------------
// Définir les constantes et variables pour les moteurs

const int Direction_Moteur_Gauche = 7; // indique que Direction_Moteur_Gauche est sur la broche : PIN 7
const int Vitesse_Moteur_Gauche = 9; // indique que Vitesse_Moteur_Gauche est sur la broche : PIN 9
const int Direction_Moteur_Droit = 8; // indique que Direction_Moteur_Droit est sur la broche : PIN 8
const int Vitesse_Moteur_Droit = 10; // indique que Vitesse_Moteur_Droit est sur la broche : PIN 10


// Direction_Moteur indique le sens de rotation du moteur pour faire aller le robot vers l'avant.
// Vitesse_Moteur sert à la fois à gérer la vitesse du Robot avec la fonction analogWrite, mais elle sert aussi à faire tourner le moteur dans l'autre sens avec la fonction digitalWrite

//----------------------------------------------------------
// Définir les constantes et variables pour le capteur HC-SR04
int trigPin = 4; // indique que la fiche Trig du capteur est sur la broche : PIN 4
int echoPin = 5; // indique que la fiche Echo du capteur est sur la broche : PIN 5

float ping()
{
 // send a 10us+ pulse
 digitalWrite(trigPin, LOW);
 delayMicroseconds(20);
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(trigPin, LOW);
 delayMicroseconds(20);
 
 //  read duration of echo 
 int duration = pulseIn(echoPin, HIGH);

 // dist = duration * speed of sound * 1/2
 // dist in cm = duration in us * 1 x 10^{-6} * 340.26 * 100 * 1/2
 // =  0.017*duration
 float dist = 0.017 * duration;
 
 return dist;

}

//----------------------------------------------------------
void setup()
{

   // définir les PIN des moteurs pour savoir si c'est des entrées ou des sorties
   pinMode( Direction_Moteur_Gauche, OUTPUT ); // indique que Direction_Moteur_Gauche est une sortie
   pinMode( Vitesse_Moteur_Gauche, OUTPUT ); // indique que Vitessee_Moteur_Gauche est une sortie
   pinMode( Direction_Moteur_Droit, OUTPUT ); // indique que Direction_Moteur_Droit est une sortie
   pinMode( Vitesse_Moteur_Droit, OUTPUT ); // indique que Vitesse_Moteur_Droit est une sortie

   // définir les PIN du capteur pour savoir si ce sont des entrées ou des sorties
   pinMode(trigPin, OUTPUT); // indique que la broche TrigPin est une sortie
   pinMode(echoPin, INPUT); // indique que la broche EchoPin est ne entrée
   Serial.begin(9600); //Initialize serial at 9600bps  
   
   
} 
//----------------------------------------------------------
void marche_Avant(  )
{
   // Avancer tout droit à une vitesse de 255 sur 255
   digitalWrite( Direction_Moteur_Gauche, HIGH ); // met en marche le moteur gauche
   digitalWrite( Direction_Moteur_Droit, HIGH ); // met en marche le moteur droit
   analogWrite( Vitesse_Moteur_Gauche, 190 ); // règle la vitesse du moteur Gauche à 200 (allant de 1 à 255)
   analogWrite( Vitesse_Moteur_Droit, 200 ); // règle la vitesse du moteur Droit à 200 (allant de 1 à 255)
}

//----------------------------------------------------------
void marche_Arriere (  )
{
   // Reculer tout droit à une vitesse de 255 sur 255
   digitalWrite( Vitesse_Moteur_Gauche, HIGH ); // pour faire reculer on utilise "Vitesse_Moteur_Gauche
   digitalWrite( Vitesse_Moteur_Gauche, HIGH ); //
   analogWrite( Vitesse_Moteur_Gauche, 220 ); // règle la vitesse du moteur Gauche à 200 (allant de 1 à 255)
   analogWrite( Vitesse_Moteur_Droit, 220 ); // règle la vitesse du moteur Droit à 200 (allant de 1 à 255)
}

//----------------------------------------------------------
void tourner_Droite (  )
{
   digitalWrite( Direction_Moteur_Gauche, HIGH ); // met en marche le moteur gauche
   digitalWrite( Vitesse_Moteur_Droit, HIGH ); // met en marche le moteur droit mais en sens inverse
   analogWrite( Vitesse_Moteur_Gauche, 200 ); // règle la vitesse du moteur Gauche à 100 (allant de 1 à 255)
   analogWrite( Vitesse_Moteur_Droit, 100 ); // règle la vitesse du moteur Droit à 50 (allant de 1 à 255)
}

//----------------------------------------------------------
void tourner_Gauche (  )
{
   digitalWrite( Vitesse_Moteur_Gauche, HIGH ); // met en marche le moteur gauche
   digitalWrite( Direction_Moteur_Droit, HIGH ); // met en marche le moteur droit mais en sens inverse
   analogWrite( Vitesse_Moteur_Gauche, 100 ); // règle la vitesse du moteur Gauche à 50 (allant de 1 à 255)
   analogWrite( Vitesse_Moteur_Droit, 200 ); // règle la vitesse du moteur Droit à 100 (allant de 1 à 255)
}

//----------------------------------------------------------
void arreter ( )
{
   digitalWrite( Direction_Moteur_Gauche, LOW ); // met en marche le moteur gauche
   digitalWrite( Direction_Moteur_Droit, LOW ); // met en marche le moteur droit
   analogWrite( Vitesse_Moteur_Gauche, 0 ); // règle la vitesse du moteur Gauche à 0 (allant de 1 à 255)
   analogWrite( Vitesse_Moteur_Droit, 0 ); // règle la vitesse du moteur Droit à 0 (allant de 1 à 255)
}
//----------------------------------------------------------
void marche_Avant_Rapide(  )
{
   // Avancer tout droit à une vitesse de 255 sur 255
   digitalWrite( Direction_Moteur_Gauche, HIGH ); // met en marche le moteur gauche
   digitalWrite( Direction_Moteur_Droit, HIGH ); // met en marche le moteur droit
   analogWrite( Vitesse_Moteur_Gauche, 250 ); // règle la vitesse du moteur Gauche à 200 (allant de 1 à 255)
   analogWrite( Vitesse_Moteur_Droit, 250 ); // règle la vitesse du moteur Droit à 200 (allant de 1 à 255)
}
//----------------------------------------------------------
void loop() 
{
   {    while (Serial.available() == 0); // wait for character to arrive
  char c = Serial.read();

  
    if(c =='4') {
   marche_Avant(  );
  }
    if(c == '1'){
   arreter ( );
  }
     if(c == '2'){
   tourner_Droite (  );
  }
     if(c == '3'){ 
   tourner_Gauche (  );
  }
     if(c == '0'){
   marche_Arriere (   );
  } 
    if(c == '5') {
    float dist = ping();
  
    if (dist > 0 && dist < 25) {  
   
      arreter();
       delay (1000);
       marche_Arriere();
      delay (1000);
      tourner_Droite();
       delay (1000);
       marche_Avant();
       delay(1000);
   }

    else   {
      marche_Avant();
      delay(800);
   }  
    } 
     if(c == '6') {
   marche_Avant_Rapide ( );
  }
}
}

bonjour,
1- aère ton texte en faisant des paragraphes lisibles

ca rime à quoi ceci?

void loop()
{
   {    while

debug ton code en mettant des serial.print pour voir ce que tu recois

c'est aussi le foutoire dans tes pins quand tu appelles les fonctions de vitesses comme marche_avant() marche_arriere() ...
tu mélanges Vitesse_Moteur_Gauche et Direction_Moteur_Gauche

void marche_Avant( )
{
// Avancer tout droit à une vitesse de 255 sur 255
digitalWrite( Direction_Moteur_Gauche, HIGH ); // met en marche le moteur gauche
digitalWrite( Direction_Moteur_Droit, HIGH ); // met en marche le moteur droit
analogWrite( Vitesse_Moteur_Gauche, 190 ); // règle la vitesse du moteur Gauche à 200 (allant de 1 à 255)
analogWrite( Vitesse_Moteur_Droit, 200 ); // règle la vitesse du moteur Droit à 200 (allant de 1 à 255)
}

//---------------------------la y a un truc qui cloche -------------------------------
void marche_Arriere ( )
{
// Reculer tout droit à une vitesse de 255 sur 255
digitalWrite( Vitesse_Moteur_Gauche, HIGH ); // pour faire reculer on utilise "Vitesse_Moteur_Gauche
digitalWrite( Vitesse_Moteur_Gauche, HIGH ); //
analogWrite( Vitesse_Moteur_Gauche, 220 ); // règle la vitesse du moteur Gauche à 200 (allant de 1 à 255)
analogWrite( Vitesse_Moteur_Droit, 220 ); // règle la vitesse du moteur Droit à 200 (allant de 1 à 255)
}

B83s:
c'est aussi le foutoire dans tes pins quand tu appelles les fonctions de vitesses comme marche_avant() marche_arriere() ...
tu mélanges Vitesse_Moteur_Gauche et Direction_Moteur_Gauche

C'est typiquement le genre d'erreur que l'on trouve en 5 minutes en relisant sont code. Ou en testant unitairement chaque fonction.
Il faut travailler avec méthode même sur plateforme Arduino.