Bonjour,
Je souhaiterais mettre en route un moteur piloté par un driver Adafruit TB6612, mon module bluetooth est un HC-06. Je travaille avec une Arduino Uno. Si j’envoie au module le caractère “1”, alors le moteur DC doit tourner, et si, alors qu’il tourne, je lui envoie le caractère “3”, le moteur sors de la boucle while().
Mon problème, c’est que je voudrais que même si je suis sorti de cette boucle une fois, si je renvoie de nouveau le caractère “1”, le moteur se remette à tourner et s’arrête de nouveau quand j’envoie le “3”, et ce à “l’infini”.
Voici mon code :
#include <Stepper.h>
#include <SoftwareSerial.h>
#define STEPS 400
#define RX 11
#define TX 10
Stepper stepper(STEPS, 4, 5, 6, 7);
SoftwareSerial bluetooth(RX, TX);
String Message_Recu_1;
String Message_Recu_2;
const int bouton_sens_horaire = 13 ;
const int bouton_sens_anti_horaire = 50 ;
const int button_droite = 8 ;
const int button_gauche = 12 ;
const int sens_moteur_droite_dc = 2 ;
const int sens_moteur_gauche_dc = 3 ;
const int vitesse_moteur_dc = 9 ;
int etatbouton_sens_horaire = 0;
int etatbouton_sens_anti_horaire = 0;
int etatbutton_droite = 0 ;
int etatbutton_gauche = 0 ;
void setup() {
Serial.begin(9600);
bluetooth.begin(9600);
pinMode(button_droite,INPUT_PULLUP);
pinMode(button_gauche,INPUT_PULLUP);
pinMode(bouton_sens_horaire,INPUT_PULLUP);
pinMode(bouton_sens_anti_horaire,INPUT_PULLUP);
pinMode(sens_moteur_droite_dc,OUTPUT);
pinMode(sens_moteur_gauche_dc,OUTPUT);
pinMode(vitesse_moteur_dc,OUTPUT);
digitalWrite(vitesse_moteur_dc,LOW);
digitalWrite(sens_moteur_droite_dc,LOW);
digitalWrite(sens_moteur_gauche_dc,LOW);
stepper.setSpeed(15);
}
void loop() {
if (bluetooth.available())
{
Message_Recu_1 = String("");
if (bluetooth.available())
{
Message_Recu_1 = Message_Recu_1 + char(bluetooth.read());
delay(100);
}
if (Message_Recu_1.length() > 0){
while (Message_Recu_1 == "1" and Message_Recu_2 != "3"){
digitalWrite(sens_moteur_droite_dc,HIGH);
digitalWrite(sens_moteur_gauche_dc,LOW);
digitalWrite(vitesse_moteur_dc,HIGH);
Serial.write("Marche vers la droite");
Message_Recu_2 = String("");
if (bluetooth.available()){
Message_Recu_2 = Message_Recu_2 + char (bluetooth.read());
}
}
digitalWrite(sens_moteur_droite_dc,LOW);
digitalWrite(sens_moteur_gauche_dc,LOW);
digitalWrite(vitesse_moteur_dc,LOW);
}
}
}
Pour les constantes et variables, certaines ne sont pas utilisées, car ce n’est là qu’un fragment de mon code entier, le reste n’était pas en rapport avec mon problème.
Merci pour toute aide que vous pourriez m’apporter.