Bonjour,
Veuillez excuser une question sans doute basique, mais je débute...
J'ai réalisé un robot simple commandé par bluetooth via HCO5 qui fonctionne bien, mai à l'ajout d'une fonction de détection US via HCSR04, la détection de distance fonctionne mais plus la commande bluetooth. Quid ?
Les branchements sont corrects bien sûr.
Malgré mes efforts et mes tests je ne comprend pas.
Merci.
(Je 'nai pas trouvé où me présenter
)
#include <SoftwareSerial.h>
#include <HCSR04.h>
const int trigPin = 10; //attribution des broches du capteur US
const int echoPin = 11;
SoftwareSerial mySerial(2, 3); // Création d'une instance du port série logiciel
int val; // commande bluetooth
UltraSonicDistanceSensor distanceSensor(trigPin, echoPin); // Création d'une instance du capteur US
// attribution des brochages moteurs
int in1 = 9; // Entrée In sens rotation moteur A
int in2 = 8; // Entrée In sens rotation
int in3 = 7; // Entrée In sens rotation moteur B
int in4 = 6; // Entrée In sens rotation
void setup()
{
mySerial.begin(9600); // initialisation de la vitesse port série logiciel
Serial.begin(9600); // initialisation de la vitesse port série matériel
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop() {
arret();
float distance = distanceSensor.measureDistanceCm();
Serial.print ("Distance :");
Serial.println(distance);
if (mySerial.available()) { // vérifie s'il y a des données disponibles sur la liason bluetooth
val = mySerial.read(); // stocke les données dans la variable val
if (val == '0') {
arret () ;
}
if (val == '1') {
avancer () ;
}
if (val == '2') {
reculer () ;
}
if (val == '3') {
tourneradroite () ;
}
if (val == '4') {
tourneragauche () ;
}
if (val == '5') {
arret () ;
}
}
if (distance < 30 ) {
arret();
delay(300);
reculer();
delay (1000);
}
}
// Définition des déplacements
void arret () {
digitalWrite(in1, LOW); // Moteur A arrêt
digitalWrite(in2, LOW); // Moteur A arrêt
digitalWrite(in3, LOW); // Moteur B arrêt
digitalWrite(in4, LOW); // Moteur B arrêt
}
void avancer () {
digitalWrite(in1, LOW); // Moteur A marche
digitalWrite(in2, HIGH); // Moteur A marche
digitalWrite(in3, HIGH); // Moteur B marche
digitalWrite(in4, LOW); // Moteur B marche
}
void tourneragauche () {
digitalWrite(in1, HIGH); // Moteur A marche
digitalWrite(in2, LOW); // Moteur A marche
digitalWrite(in3, HIGH); // Moteur B arrêt
digitalWrite(in4, LOW); // Moteur B arrêt
}
void tourneradroite () {
digitalWrite(in1, LOW); // Moteur A arrêt
digitalWrite(in2, HIGH); // Moteur A arrêt
digitalWrite(in3, LOW); // Moteur B marche
digitalWrite(in4, HIGH); // Moteur B marche
}
void reculer () {
digitalWrite(in1, HIGH); // Moteur A marche
digitalWrite(in2, LOW); // Moteur A marche
digitalWrite(in3, LOW); // Moteur B marche
digitalWrite(in4, HIGH); // Moteur B marche
}
