Problème bouton intéraction ultrason et bluetooth.

Bonjour,
Voila tout d’abord j’ai pour projet de reproduire le robot Scott de la machinerie. Mais d’une autre forme et avec la commande bluetooth en plus. Le câblage de l’utrason uniquement fonctionne et pour le bluetooth aussi. Mais j’ai voulu pouvoir changer entre le mode bluetooth et le mode ultrason à l’aide d’un interrupteur. Le problème est que j’aimerai savoir si c’est possible de faire cela car après le câblage et la programmation les deux modules fonctionnent en même temps ou alors pas du tout. Le problème viendrai surement de ma programmation. Voici la programmation en entier, merci d’avance:

#include <Bounce2.h>

// Une broche par position
#define INTER_A 3
#define INTER_B 4

// Liste des états possibles de l’interrupteur. Les valeurs utilisées doivent juste être différentes entre elles.
// J’aurais d’ailleurs pu ré-utiliser INTER_A et INTER_B…
#define INTER_ETAT_INDEFINI -1
#define INTER_ETAT_A 10
#define INTER_ETAT_B 20

// Créer (instancier) un objet Bounce pour chaque broche
Bounce interA;
Bounce interB;

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 2
int echoPin = 5; // indique que la fiche Echo du capteur est sur la broche : PIN 4

// Définir les boutons
const int boutonSwitch = 6; // indique que le bouton pour changer de mode est sur la broche : PIN 6
int etatBouton; // variable représentant le bouton, soit ouvert ou fermé

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()
{
// Configure les broches avec la résistance de tirage
pinMode(INTER_A, INPUT_PULLUP);
pinMode(INTER_B, INPUT_PULLUP);

// Attache l’objet ‘interA’ à sa broche
interA.attach(INTER_A);
interA.interval(5); // temps de latence entre deux mesures d’état

// Attache l’objet ‘interB’ à sa broche
interB.attach(INTER_B);
interB.interval(5); // temps de latence entre deux mesures d’état
// définir les PIN des boutons pour savoir si c’est des entrées ou des sorties
pinMode(boutonSwitch, INPUT); // indique que le bouton pour changer de mode est une sortie
// 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 c’est 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

}

// Variable qui va contenir l’état courant du bouton
// On commence avec -1 qui est un état inconnu…
int courant = INTER_ETAT_INDEFINI;

//----------------------------------------------------------
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, 200 ); // 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, 200 ); // 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 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, 100 ); // règle la vitesse du moteur Gauche à 100 (allant de 1 à 255)
analogWrite( Vitesse_Moteur_Droit, 50 ); // 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, 50 ); // règle la vitesse du moteur Gauche à 50 (allant de 1 à 255)
analogWrite( Vitesse_Moteur_Droit, 100 ); // 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 loop()
{
{
// Mise à jour de l’état des interA et B : bouton pressé ou non ?
interA.update();
interB.update();

// Récupération de l’état des broches
int valeurA = interA.read();
int valeurB = interB.read();

// Si la valeur n’a pas changé depuis la dernière fois, ne rien faire.
if (valeurA == true && courant == INTER_ETAT_A)
return;
if (valeurB == true && courant == INTER_ETAT_B)
return;

if (valeurA == true)
courant = INTER_ETAT_A;
if (valeurB == true)
courant = INTER_ETAT_B;

// Agir en fonction de l’état du bouton
if ( courant == INTER_ETAT_A)
{ 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);
} }
else
{ 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 ();
} }
}

}

Salut !
Merci d'utiliser les balises de codes...
d'indenter correctement ton code, de plus j'ai pu constater plusieurs trucs, pour moi, inutile comme le bouton boutonSwitch...

Tu pourrais tout remettre au propre ?