Plusieurs capteur ultrason

Portrait de Omega

Bonjours voila mon probleme , je dois connecter plusieurs capteur ultrason dans 1 programme , pour en faire fonctionner , pas de probleme , mais arriver a 2 , le 2e ne fonctionne pas , voicis mon programme ; 

on ma parler du switch case mais je ne sais pas ou et comment m'en servvir merci de vos reponse .

// définition des broches utilisées 
int trig1 = 12; 
int echo1 = 11;
int trig2 = 9;
int echo2 = 10;
long lecture_echo1;
long lecture_echo2; 
long cm1;
long cm2;

void setup() { 
//Définition des entrées/Sorties
  pinMode(trig1, OUTPUT);
  pinMode(trig2, OUTPUT); 
  digitalWrite(trig1, LOW);
  digitalWrite(trig2, LOW); 
  pinMode(echo1, INPUT);
  pinMode(echo2, INPUT);
//Liaison série 
  Serial.begin(9600); 
}

void loop() { 
//lancement de l'impulsion 
  digitalWrite(trig1, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(trig1, LOW);
  digitalWrite(trig2, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig2, LOW);

//Mesure de la pulsion
lecture_echo1 = pulseIn(echo1, HIGH);
lecture_echo2 = pulseIn(echo2, HIGH);

 //calcul de la distance en centimetre
  cm1 = lecture_echo1 / 58;
  cm2 = lecture_echo2 / 58;

 //Afficher distance dans moniteur serie
  Serial.print("Distance en cm SENSOR1 : "); 
  Serial.println(cm1); 
  delay(1000);
  Serial.print("Distance en cm SENSOR2 : ");
  Serial.println(cm2);
  delay(1000); 

if(cm1 > 20 && cm1 < 60){

  Serial.print ("EN VUS D'UN OBTACLE");}
if(cm2 > 20 && cm2 < 60){
  Serial.print ("EN VUS D'UN OBSTACLE 2");
}
}

Portrait de Nathan Garnier

Bonjour,

Pour assurer la lecture des 2 capteur il faut faire par "séquence" cet a dire, vous faite l'acquisition entière pour un capteur et après vous faites l'autre

Portrait de Omega

Merci de ta reponse Nathan , cela veux dire qu'il ne faut pas que je melange le programme comme je viens de le faire mais que j'an crée un 2em a la suite du 1er ?

Portrait de Nathan Garnier

Oui c'est tt a fait sa.

Portrait de Omega

J'ai essayé comme vous m'avez dit mais quand je refais le programme en séquence ca ne marche pas /: un msg d'erreur s'affiche au niveau du setup

// définition des broches utilisées
int trig = 12;
int echo = 11;
long lecture_echo;
long cm;
void setup() {
//Définition des entrées/Sorties
  pinMode(trig, OUTPUT);
  digitalWrite(trig, LOW);
  pinMode(echo, INPUT);
//Liaison série
  Serial.begin(9600);
}
void loop() {
//lancement de l'impulsion
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
//Mesure de la pulsion
lecture_echo = pulseIn(echo, HIGH);
 //calcul de la distance en centimetre
  cm = lecture_echo / 58;
 //Afficher distance dans moniteur serie
  Serial.print("Distance en cm : ");
  Serial.println(cm);
  delay(1000);
if(cm > 10 && cm < 35){
  Serial.print ("En vus d'un obstacles ! ");}
}
 
// définition des broches utilisées
int trig2 = 9;
int echo2 = 10;
long lecture_echo2;
long cm2;
void setup  () {
//Définition des entrées/Sorties
  pinMode(trig2, OUTPUT);
  digitalWrite(trig2, LOW);
  pinMode(echo2, INPUT);
//Liaison série
  Serial.begin(9600);
}
void loop() {
//lancement de l'impulsion
  digitalWrite(trig2, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig2, LOW);
//Mesure de la pulsion
lecture_echo2 = pulseIn(echo2, HIGH);
 //calcul de la distance en centimetre
  cm2 = lecture_echo2 / 58;
 //Afficher distance dans moniteur serie
  Serial.print("Distance en cm : ");
  Serial.println(cm2);
  delay(1000);
if(cm > 10 && cm < 35){
  Serial.print ("Nous sommes entre 10 et 35 cm");}
}
Portrait de Omega

Et bien merci encore ,je vais essayer ca , et je vous verrais par de mes resultats 

Portrait de Omega

Ha priorie ca ne fonctionne pas , je n'arrive toujours pas a faire fonctionner plusieurs capteur HS-SR04 sur le meme programme :/

Portrait de Omega

J'ai essayé comme vous m'avez dit mais quand je refais le programme en séquence ca ne marche pas /: un msg d'erreur s'affiche au niveau du setup

// définition des broches utilisées
int trig = 12;
int echo = 11;
long lecture_echo;
long cm;
void setup() {
//Définition des entrées/Sorties
  pinMode(trig, OUTPUT);
  digitalWrite(trig, LOW);
  pinMode(echo, INPUT);
//Liaison série
  Serial.begin(9600);
}
void loop() {
//lancement de l'impulsion
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
//Mesure de la pulsion
lecture_echo = pulseIn(echo, HIGH);
 //calcul de la distance en centimetre
  cm = lecture_echo / 58;
 //Afficher distance dans moniteur serie
  Serial.print("Distance en cm : ");
  Serial.println(cm);
  delay(1000);
if(cm > 10 && cm < 35){
  Serial.print ("En vus d'un obstacles ! ");}
}
 
// définition des broches utilisées
int trig2 = 9;
int echo2 = 10;
long lecture_echo2;
long cm2;
void setup  () {
//Définition des entrées/Sorties
  pinMode(trig2, OUTPUT);
  digitalWrite(trig2, LOW);
  pinMode(echo2, INPUT);
//Liaison série
  Serial.begin(9600);
}
void loop() {
//lancement de l'impulsion
  digitalWrite(trig2, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig2, LOW);
//Mesure de la pulsion
lecture_echo2 = pulseIn(echo2, HIGH);
 //calcul de la distance en centimetre
  cm2 = lecture_echo2 / 58;
 //Afficher distance dans moniteur serie
  Serial.print("Distance en cm : ");
  Serial.println(cm2);
  delay(1000);
if(cm > 10 && cm < 35){
  Serial.print ("Nous sommes entre 10 et 35 cm");}
}
Portrait de hcfroid

Salut

2 boucles loop, impossible.

Tu emets capteur1, tu ecoutes capteur1, tu traites capteur1, ensuite tu passes au 2.

Portrait de Naoui Ayoub

Salut

2 boucles loop ca ne va pas fonctionner car il va rester dans la premier essayer de faire 2 fonction Capteur1 et Capteur2 et traiter l'un après l'autre