Projet visant à pouvoir compter des personnes dans un salle en utilisant deux capteurs infrasons (et aussi apprendre comment faire de l’Arduino. Code pour mesurer une distance avec le capteur: # define Broche_Echo 7 // Broche Echo du HC-SR04 sur la pin 7 # define Broche_Trigger 8 // Broche Trigger du HC-SR04 sur la pin 8 long temps; long Distance; void setup() { pinMode(Broche_Echo,INPUT); //Met le pin 7 (définie plus haut) relié à la broche echo en entré pinMode(Broche_Trigger,OUTPUT); //Met le pin 8 (définie plus haut) relié à la broche en entré Serial.begin(9600); //Permet de pouvoir faire des prints via l'usb digitalWrite(Broche_Trigger, LOW); } void loop() { digitalWrite(Broche_Trigger, HIGH); delay(0.02); digitalWrite(Broche_Trigger, LOW); //lance le trigger en le metant à l'état au haut pendant 8 micro secondes (max pour l'activer est 10) int temps = pulseIn(Broche_Echo, HIGH); Distance = temps*0.034/2; //Recupére sur temps le temps que écho est à 1. De plus si elle ne passe pas à low d'ici 55 micro seconde alors il cesse d'attendre. if (Distance>=400){ Serial.println("TROP loin"); } if (Distance<=2){ Serial.println("TROP proche"); }else{ Serial.print("Distance du capteur : "); Serial.println(Distance); } delay(100); } Mise à jour du code en incluant les deux capteurs fonctionnels , un problème comment compter les personne qui passe ? # define Broche_Echo 7 //Broche Echo du HC-SR04 sur la pin 7 # define Broche_Trigger 8 // Broche Trigger du HC-SR04 sur la pin 8 # define Broche_Echobis 12//Broche Echo du HC-SR04 sur la pin 7 # define Broche_Triggerbis 4 // Broche Trigger du HC-SR04 sur la pin 8 long temps; long Distance; long Distancebis; int entre; int sort; int nb_de_gens; void setup() { pinMode(Broche_Echo,INPUT); //Met le pin 7 (définie plus haut) relié à la broche echo en entré pinMode(Broche_Trigger,OUTPUT); //Met le pin 8 (définie plus haut) relié à la broche en entré Serial.begin(9600); //Permet de pouvoir faire des prints via l'usb digitalWrite(Broche_Trigger, LOW); digitalWrite(Broche_Triggerbis, LOW); entre = 0; sort = 0; nb_de_gens = 0; } void loop() { digitalWrite(Broche_Trigger, HIGH); delay(0.02); digitalWrite(Broche_Trigger, LOW); //lance le trigger en le metant à l'état au haut pendant 8 micro secondes (max pour l'activer est 10) temps = pulseIn(Broche_Echo, HIGH); Distance = temps*0.034/2; //Recupére sur temps le temps que écho est à 1. De plus si elle ne passe pas à low d'ici 55 micro seconde alors il cesse d'attendre. if (Distance>=400){ Serial.println("TROP loin"); }else{ if (Distance<=2){ Serial.println("TROP proche"); }else{ Serial.print("Distance du capteur 1 : "); Serial.println(Distance); } } delay(10); digitalWrite(Broche_Triggerbis, HIGH); delay(0.02); digitalWrite(Broche_Triggerbis, LOW); //lance le trigger en le metant à l'état au haut pendant 8 micro secondes (max pour l'activer est 10) temps = pulseIn(Broche_Echobis, HIGH); Distancebis = temps*0.034/2; //Recupére sur temps le temps que écho est à 1. De plus si elle ne passe pas à low d'ici 55 micro seconde alors il cesse d'attendre. if (Distancebis>=400){ Serial.println("TROP loin 2"); } else{ if (Distancebis<=2){ Serial.println("TROP proche 2"); }else{ Serial.print("Distance du capteur 2 : "); Serial.println(Distancebis); Serial.println(""); } } if (Distance < 90){ if(sort==0){ sort -=1; nb_de_gens -=1; }else{ if(entre == 0){entre +=1;} } } if (Distancebis < 90){ if(entre>0){ entre -=1; nb_de_gens +=1; }else{ if(sort == 0){sort +=1;} } } Serial.println(""); Serial.println(nb_de_gens); Serial.println(entre); Serial.println(sort); Serial.println(""); delay(1000); } Amelioration, le programe est quasi fonctionnel mais bug encore un peu. Code actuel: # define Broche_Echo 7 //Broche Echo du HC-SR04 sur la pin 7 # define Broche_Trigger 8 // Broche Trigger du HC-SR04 sur la pin 8 # define Broche_Echobis 4//Broche Echo du HC-SR04 sur la pin 4 # define Broche_Triggerbis 12 // Broche Trigger du HC-SR04 sur la pin 12 # define Objet_devant 90 //Distance devant la quelle on considere qu'il est un objet devant le capteur 1 # define Objet_devant_bis 90 //Distance devant la quelle on considere qu'il est un objet devant le capteur 2 long temps; long Distance; long avant; long Distancebis; long avantbis; int entre; int sort; int nb_de_gens; void setup() { pinMode(Broche_Echo,INPUT); //Met le pin 7 (définie plus haut) relié à la broche echo en entré pinMode(Broche_Trigger,OUTPUT); //Met le pin 8 (définie plus haut) relié à la broche en entré pinMode(Broche_Echobis,INPUT); //Met le pin 4 (définie plus haut) relié à la broche echo en entré pinMode(Broche_Triggerbis,OUTPUT); //Met le pin 12 (définie plus haut) relié à la broche en entré Serial.begin(9600); //Permet de pouvoir faire des prints via l'usb digitalWrite(Broche_Trigger, LOW); digitalWrite(Broche_Triggerbis, LOW); temps = -1; Distance = -1; avant= Objet_devant; Distancebis = -1; avantbis = Objet_devant_bis; entre = 0; sort = 0; nb_de_gens = 4; } void loop() { digitalWrite(Broche_Trigger, HIGH); delay(0.02); digitalWrite(Broche_Trigger, LOW); //lance le trigger en le metant à l'état au haut pendant 8 micro secondes (max pour l'activer est 10) temps = pulseIn(Broche_Echo, HIGH); avant = Distance; Distance = temps*0.034/2; //Recupére sur temps le temps que écho est à 1. De plus si elle ne passe pas à low d'ici 55 micro seconde alors il cesse d'attendre. if (Distance>=400){ Serial.println("TROP loin"); }else{ if (Distance<=2){ Serial.println("TROP proche"); }else{ Serial.print("Distance du capteur 1 : "); Serial.println(Distance); } } delay(10); digitalWrite(Broche_Triggerbis, HIGH); delay(0.02); digitalWrite(Broche_Triggerbis, LOW); //lance le trigger en le metant à l'état au haut pendant 8 micro secondes (max pour l'activer est 10) temps = pulseIn(Broche_Echobis, HIGH); avantbis = Distancebis; Distancebis = temps*0.034/2; //Recupére sur temps le temps que écho est à 1. puis calcule la distance via vitesse*temps/2 Serial.print("Distance du capteur 2 : "); Serial.println(Distancebis); Serial.println(""); if (Distance < Objet_devant){ if (avant>Objet_devant){ if(sort>0){ sort -=1; nb_de_gens -=1; }else{ entre +=1; } } } if (Distancebis < Objet_devant_bis){ if (avantbis>Objet_devant_bis){ if(entre>0){ entre -=1; nb_de_gens -=1; }else{ sort +=1; } } } Serial.print("Distance du capteur 1 : "); Serial.println(Distance); Serial.print("Distance du capteur 2 : "); Serial.println(Distancebis); Serial.println(""); Serial.println(""); Serial.print("nb_de_gens : "); Serial.println(nb_de_gens); Serial.print("entre : "); Serial.println(entre); Serial.print("sort : "); Serial.println(sort); Serial.print("avant : "); Serial.println(avant); Serial.print("avantbis : "); Serial.println(avantbis); Serial.println(""); delay(100); } Modification, ne marche pas mais début de la création de la pile.; # define Broche_Echo 7 //Broche Echo du HC-SR04 sur la pin 7 # define Broche_Trigger 8 // Broche Trigger du HC-SR04 sur la pin 8 # define Broche_Echobis 4//Broche Echo du HC-SR04 sur la pin 4 # define Broche_Triggerbis 12 // Broche Trigger du HC-SR04 sur la pin 12 # define Objet_devant 90 //Distance devant la quelle on considere qu'il est un objet devant le capteur 1 # define Objet_devant_bis 90 //Distance devant la quelle on considere qu'il est un objet devant le capteur 2 long temps; long Distance; long avant[5] = {90, 90, 90, 90, 90 }; long Distancebis; long avantbis[5] = {90,90, 90, 90, 90}; int entre; int sort; int nb_de_gens; int pas_de_precedant(long *tab){ for (int i = 0;i<5;i++){ if (i 0){ sort -=1; nb_de_gens -=1; }else{ entre +=1; } } } if (Distancebis < Objet_devant_bis){ if (pas_de_precedant(avantbis)){ if(entre>0){ entre -=1; nb_de_gens -=1; }else{ sort +=1; } } } Serial.print("Distance du capteur 1 : "); Serial.println(Distance); Serial.print("Distance du capteur 2 : "); Serial.println(Distancebis); Serial.println(""); Serial.println(""); Serial.print("nb_de_gens : "); Serial.println(nb_de_gens); Serial.print("entre : "); Serial.println(entre); Serial.print("sort : "); Serial.println(sort); Serial.print("avant : "); Serial.println(avant[0]); Serial.print("avantbis : "); Serial.println(avantbis[0]); Serial.println(""); delay(100); }