codage de 2 capteur ultrason simultané

Bonjour,
J’essaye de faire fonctionner 2 capteurs ultrasons HCSR04 en simultané, mais seul le premier fonctionne.
Quelqu’un, pourrait-il m’aider ?
Merci
Voilà mon programme :

const byte TRIGGER1 = 38; // broche TRIGGER1
const byte ECHO1 = 36; // broche ECHO1
const byte TRIGGER2 = 34; // broche TRIGGER2
const byte ECHO2 = 32; // broche ECHO2
/* Constantes pour le timeout /
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = 8m à 340m/s
/
Vitesse du son dans l’air en mm/us */
const float SOUND_SPEED = 340.0 / 1000;

void setup() {
/*code pour module ultrason HCSR04 */

Serial.begin(115200);

pinMode(TRIGGER1, OUTPUT);
digitalWrite(TRIGGER1, LOW);
pinMode(ECHO1, INPUT);

pinMode(TRIGGER2, OUTPUT);
digitalWrite(TRIGGER2, LOW);
pinMode(ECHO2, INPUT);
}
void loop() {

digitalWrite(TRIGGER1, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER1, LOW);

digitalWrite(TRIGGER2, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER2, LOW);

long measure1 = pulseIn(ECHO1, HIGH, MEASURE_TIMEOUT);
long measure2 = pulseIn(ECHO2, HIGH, MEASURE_TIMEOUT);

/* 3 calcul la distance a partir du temps mesuré */

float distance_mm1 = measure1 / 2.0 * SOUND_SPEED;
Serial.println("distance ");
Serial.print(distance_mm1 / 10.0, 2);
Serial.print("cm de ");
delay(1000);

float distance_mm2 = measure2 / 2.0 * SOUND_SPEED;
Serial.println("distance ");
Serial.print(distance_mm2 / 10.0, 2);
Serial.print("cm de ");
delay(1000);
}

POUR COMMENCER LIRE LES MESSAGES ÉPINGLÉS

  • Règles du forum francophone
  • Faire un nouveau message avec les balises code

Clairement quasi personne ne lit le code s’il n’est pas entre les balises code. => Icône </> à gauche
C’est toi qui vois si tu dois éditer ton premier message pour que le code soit lu.
Le code doit ressembler à ceci :

const byte TRIGGER1 = 38; // broche TRIGGER1
const byte ECHO1 = 36; // broche ECHO1
const byte TRIGGER2 = 34; // broche TRIGGER2
const byte ECHO2 = 32; // broche ECHO2
/* Constantes pour le timeout */
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = 8m à 340m/s
/* Vitesse du son dans l'air en mm/us */
const float SOUND_SPEED = 340.0 / 1000;

void setup() {
  /*code pour module ultrason HCSR04 */
  
  Serial.begin(115200);

Bien évidement le code n’est pas complet, c’est juste pour l’exemple.

Ensuite je te propose un instant de réflexion : si tu demandes aux deux capteurs à US d’envoyer leur salve en même temps cela va être un beau foutoir.
Comment chaque capteur va faire pour reconnaître la réponse à “sa” salve de celle du deuxième capteur ?

Bonjour,

pulseIn est bloquant. Donc quand le premier pulseIn est terminé tu es sur que le deuxième pulseIn a raté le début de l'impulsion.