[code]
#include <HCSR04.h>
#include <SoftwareSerial.h>
//DEFINITION CAPTEUR BLUETOOTH
SoftwareSerial hc06(0, 1);
unsigned char Bluetooth_val; //définition de la valeur val
#define Gpwm_pin 16 //Pin ajustement vitesse Gauche
#define Dpwm_pin 17 //Pin ajustement vitesse Droit
//DEFINITION CONNEXION MOTEUR
int pinARG = 18; // définition de la broche 18 arrière gauche
int pinAVG = 19; // définition du broche 19 avant gauche
int pinARD = 20; // définition de la broche 20 arrière droite
int pinAVD = 21; // définition de la broche 21 avant droit
int dist_securite = 55; // dist_securite Avant
int lgrobot = 30; // Largeur Robot Avant
int vdG = 0; // Delai des delay Gauche
int vdD = 0; // Delai des delay Droit
int dist_securiteDG = 18; // dist_securite Gauche Droite
int distance_AVGH = 0; // distance AVant Gauche Haut
int distance_AVCH = 0; // distance AVant Centre Haut
int distance_AVCH_mem = 0; // distance AVant Centre Haut memrosise
int distance_AVDH = 0; // distance AVant Droit Haut
int distance_AVGB = 0; // distance AVant Gauche Bas
int distance_AVCGB = 0; // distance AVant Centre Gauche Bas
int distance_AVCDB = 0; // distance AVant Centre Droit Bas
int distance_AVDB = 0; // distance AVant Droit Bas
int mesureAVGH = 0; // mesure AVant Gauche Haut
int mesureAVCH = 0; // mesure AVant Centre Haut
int mesureAVDH = 0; // mesure AVant Droit Haut
int mesureAVGB = 0; // mesure AVant Gauche Bas
int mesureAVCDB = 0; // mesure AVant Centre Droit Bas
int mesureAVCGB = 0; // mesure AVant Centre Gauche Bas
int mesureAVDB = 0; // mesure AVant Droit Bas
int lgpassageH = 0; // largeur de passage disponible soit largeur du robot+distance dispo à gauche=distance dispo à droite Haut
int lgpassageB = 0; // largeur de passage disponible soit largeur du robot+distance dispo à gauche=distance dispo à droite Bas
int lgpassagetmpH = 0; // largeur de passage tmp disponible soit largeur du robot+distance dispo à gauche=distance dispo à droite Haut
int lgpassagetmpB = 0; // largeur de passage tmp disponible soit largeur du robot+distance dispo à gauche=distance dispo à droite Bas
int val;
int ledpin = 1;
String messageRecu = ""; // stockage du message venant du bluetooth
String messageRecu1 = ""; // stockage du message venant du bluetooth
// CAPTEUR ULTRASONIQUE HC-SR04
const byte ECHO_A0 = A0; // Broche ECHO Avant Centre Gauche BAS AVCGB
const byte TRIG_A1 = A1; // Broche TRIGGER Avant Centre Gauche BAS
const byte ECHO_A2 = A2; // Broche ECHO AVant Gauche BAS AVGB
const byte TRIG_A3 = A3; // Broche TRIGGER AVant Gauche BAS
const byte ECHO_A4 = A4; // Broche ECHO Avant Centre Droit BAS AVCDB
const byte TRIG_A5 = A5; // Broche TRIGGER Avant Centre Droit BAS
const byte ECHO_A6 = A6; // Broche ECHO Avant Droit Bas AVDB
const byte TRIG_A7 = A7; // Broche TRIGGER Avant Droit Bas
const byte ECHO_A8 = A8; // Broche ECHO AVant Centre Haut AVCH
const byte TRIG_A9 = A9; // Broche TRIGGER AVant Centre Haut
const byte ECHO_A10 = A10; // Broche ECHO Avant Gauche Haut AVGH
const byte TRIG_A11 = A11; // Broche TRIGGER Avant Gauche Haut
const byte ECHO_A12 = A12; // Broche ECHO Avant Droit Haut AVDH
const byte TRIG_A13 = A13; // Broche TRIGGER Avant Droit Haut
// Constantes pour le timeout //
const unsigned MESURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s
// Vitesse du son dans l'air en mm/us //
const float VIT_SON = 340.0 / 1000;
}
void mesure_distance_obstacle() // Mesure des Distances
{
// Mesure de distance par impulsion sur detecteur Avant Centre Gauche BAS - A0 A1 AVCGB
digitalWrite(TRIG_A1, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_A1, HIGH);
delayMicroseconds(4);
digitalWrite(TRIG_A1, LOW);
// Mesurer le temps entre l'envoi de l'impulsion ultrasonique et son écho
mesureAVCGB = pulseIn(ECHO_A0, HIGH, MESURE_TIMEOUT);
// Calculer la distance à partir du temps mesuré //
distance_AVCGB = mesureAVCGB * 0.034 / 2;
// Mesure de distance par impulsion sur detecteur AVant Gauche BAS - A2 A3 AVGB
digitalWrite(TRIG_A3, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_A3, HIGH);
delayMicroseconds(4);
digitalWrite(TRIG_A3, LOW);
mesureAVGB = pulseIn(ECHO_A2, HIGH, MESURE_TIMEOUT);
// Calculer la distance à partir du temps mesuré //
distance_AVGB = mesureAVGB * 0.034 / 2;
vdG = distance_AVGB - dist_securiteDG;
// Mesure de distance par impulsion sur detecteur AVant Centre Droit Bas - A4 A5
digitalWrite(TRIG_A5, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_A5, HIGH);
delayMicroseconds(4);
digitalWrite(TRIG_A5, LOW);
// Mesurer le temps entre l'envoi de l'impulsion ultrasonique et son écho
mesureAVCDB = pulseIn(ECHO_A4, HIGH, MESURE_TIMEOUT);
// Calculer la distance à partir du temps mesuré //
distance_AVCDB = mesureAVCDB * 0.034 / 2;
// Mesure de distance par impulsion sur detecteur AVant Droit Bas AVDB - A6 A7
delayMicroseconds(2);
digitalWrite(TRIG_A7, HIGH);
delayMicroseconds(4);
digitalWrite(TRIG_A7, LOW);
// Mesurer le temps entre l'envoi de l'impulsion ultrasonique et son écho
mesureAVDB = pulseIn(ECHO_A6, HIGH, MESURE_TIMEOUT);
// Calculer la distance à partir du temps mesuré //
distance_AVDB = mesureAVDB * 0.034 / 2;
vdD = distance_AVDB - dist_securiteDG;
// Mesure de distance par impulsion sur detecteur AVant Centre Haut AVCH - A8 A9
digitalWrite(TRIG_A9, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_A9, HIGH);
delayMicroseconds(4);
digitalWrite(TRIG_A9, LOW);
// Mesurer le temps entre l'envoi de l'impulsion ultrasonique et son écho
mesureAVCH = pulseIn(ECHO_A8, HIGH, MESURE_TIMEOUT);
// Calculer la distance à partir du temps mesuré //
distance_AVCH = mesureAVCH * 0.034 / 2;
// Mesure de distance par impulsion sur detecteur Avant Gauche Haut AVGH - A10 A11
digitalWrite(TRIG_A11, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_A11, HIGH);
delayMicroseconds(4);
digitalWrite(TRIG_A11, LOW);
// Mesurer le temps entre l'envoi de l'impulsion ultrasonique et son écho
mesureAVGH = pulseIn(ECHO_A10, HIGH, MESURE_TIMEOUT);
// Calculer la distance à partir du temps mesuré //
distance_AVGH = mesureAVGH * 0.034 / 2;
// Mesure de distance par impulsion sur detecteur Avant Droit Haut AVDH - 12 13
digitalWrite(TRIG_A13, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_A13, HIGH);
delayMicroseconds(4);
digitalWrite(TRIG_A13, LOW);
// Mesurer le temps entre l'envoi de l'impulsion ultrasonique et son écho
mesureAVDH = pulseIn(ECHO_A12, HIGH, MESURE_TIMEOUT);
// Calculer la distance à partir du temps mesuré //
distance_AVDH = mesureAVDH * 0.034 / 2;
lgpassagetmpH = (pow(distance_AVGH + lgrobot, 2) + pow(distance_AVDH + lgrobot, 2));
lgpassageH = sqrt(lgpassagetmpH) / 2;
lgpassagetmpB = (pow(distance_AVGB + lgrobot, 2) + pow(distance_AVDB + lgrobot, 2));
lgpassageB = sqrt(lgpassagetmpB) / 2;
/*
Serial.print("lgpassageB : "); Serial.print(lgpassageB); Serial.print(" ----- distance_AVGB : "); Serial.print(distance_AVGB); Serial.print(" ---- distance_AVDB : "); Serial.println(distance_AVDB);
*/
Serial.print(" distance_AVGB : "); Serial.print(distance_AVGB);
Serial.print(" distance_AVCGB : "); Serial.print(distance_AVCGB);
Serial.print(" distance_AVDB : "); Serial.print(distance_AVDB);
Serial.print(" distance_AVCDB : "); Serial.println(distance_AVCDB);
Serial.print(" distance_AVGH : "); Serial.println(distance_AVGH);
Serial.print(" distance_AVCH : "); Serial.println(distance_AVCH);
Serial.print(" distance_AVDH : "); Serial.println(distance_AVDH);
Serial.print(" distance de securite : "); Serial.println(dist_securite);
delay(1000);
}
}
}
[/code]
Ci-dessus le code que j'utilise. Pour des raisons évidentes de place, plus de 9000 caractères, j'ai supprimé les lignes pas en rapport. J'ai toujours un petit soucis coté droit qui je suppose est dû à la non lecture de AVCDB ( Avant Centre Droit Bas)
Merci de vos réponses, cordialement.