bonjour, j'aimerais utiliser 4capteurs ultrasons pour eviter que mon robot percute des obstacle ...
j'arrive avec1seul capteurs, mais 2non alors que je veux en faire 4 ( je suis mal parti ), je vous ai épargné le code pour les déplacements aussi
#define dir_1 2
#define pwm_1 3
#define dir_2 4
#define pwm_2 5
#define dir_3 7
#define pwm_3 6
#define dir_4 8
#define pwm_4 9
int pwm_value;
int execute_timer = 0;
const byte TRIGGER_PIN = 12; // Broche TRIGGER
const byte ECHO_PIN = 11; // Broche ECHO
const byte TRIGGER_PIN2 = 24; // Broche TRIGGER
const byte ECHO_PIN2 = 22;
const byte TRIGGER_PIN3 = 0; // Broche TRIGGER
const byte ECHO_PIN3 = 0;
const byte TRIGGER_PIN4 = 0; // Broche TRIGGER
const byte ECHO_PIN4 = 0;
/* Constantes pour le timeout /
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s
const unsigned long MEASURE_TIMEOUT2 = 25000UL; // 25ms = ~8m à 340m/s
/ Vitesse du son dans l'air en mm/us */
const float SOUND_SPEED = 340.0 / 1000;
const float SOUND_SPEED2 = 340.0 / 1000;
void setup() {
/* Initialise le port série */
Serial.begin(115200);
/* Initialise les broches */
pinMode(TRIGGER_PIN, OUTPUT);
digitalWrite(TRIGGER_PIN, LOW);
pinMode(ECHO_PIN, INPUT);
pinMode(TRIGGER_PIN2, OUTPUT);
digitalWrite(TRIGGER_PIN2, LOW);
pinMode(ECHO_PIN2, INPUT);
while (!Serial);
pinMode(pwm_1,OUTPUT);
pinMode(dir_1,OUTPUT);
pinMode(pwm_2,OUTPUT);
pinMode(dir_2,OUTPUT);
pinMode(pwm_3,OUTPUT);
pinMode(dir_3,OUTPUT);
pinMode(pwm_4,OUTPUT);
pinMode(dir_4,OUTPUT);
}
void loop() {
/* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER /
digitalWrite(TRIGGER_PIN, HIGH);
digitalWrite(TRIGGER_PIN2, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
digitalWrite(TRIGGER_PIN2, LOW);
/ 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) /
long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);
long measure2 = pulseIn(ECHO_PIN2, HIGH, MEASURE_TIMEOUT2);
/ 3. Calcul la distance à partir du temps mesuré /
float distance_mm = measure / 2.0 * SOUND_SPEED;
float distance_mm2 = measure / 2.0 * SOUND_SPEED2;
/ Affiche les résultats en mm, cm et m */
Serial.print(F("Distance: "));
Serial.print(distance_mm);
Serial.print(F("mm"));
Serial.print(F(" Distance2: "));
Serial.print(distance_mm2);
Serial.println(F("mm"));
if(distance_mm <= 100){
analogWrite(pwm_2,0);
analogWrite(pwm_1,0);
analogWrite(pwm_3,0);
analogWrite(pwm_4,0);
delay(250);
digitalWrite(dir_1,HIGH); //controls the direction the motor
digitalWrite(dir_2,HIGH);
analogWrite(pwm_2,40);
analogWrite(pwm_1,40);
digitalWrite(dir_3,HIGH); //controls the direction the motor
digitalWrite(dir_4,HIGH);
analogWrite(pwm_3,40);
analogWrite(pwm_4,40);
delay(1000);
analogWrite(pwm_2,0);
analogWrite(pwm_1,0);
analogWrite(pwm_3,0);
analogWrite(pwm_4,0);
}
if(distance_mm2 <= 100){
analogWrite(pwm_2,0);
analogWrite(pwm_1,0);
analogWrite(pwm_3,0);
analogWrite(pwm_4,0);
delay(250);
digitalWrite(dir_1,LOW); //controls the direction the motor
digitalWrite(dir_2,LOW);
analogWrite(pwm_2,40);
analogWrite(pwm_1,40);
digitalWrite(dir_3,LOW); //controls the direction the motor
digitalWrite(dir_4,LOW);
analogWrite(pwm_3,40);
analogWrite(pwm_4,40);
delay(1000);
analogWrite(pwm_2,0);
analogWrite(pwm_1,0);
analogWrite(pwm_3,0);
analogWrite(pwm_4,0);
}
}