"NON RÉSOLUT" Compteur et décompteur avec capteur ultrason "HC-SR04"

Bonjour

je viens vers vous car j’ai un problème au niveau du comptage et décomptage qui gère l’allumage et l’extinction de led, car quand je passe ma main devant le capteur ultrason qui gère le comptage, le comptage ne s’arrête pas et pareil pour le décomptage.

Ce que je voudrais c’est que le comptage par exemple ne fasse que un +1 et non un comptage qui ne s’arrête pas quand je passe la main devant ou si je restent devant le capteur.

En espèrent que quelqu’un est la solution !!!

Car je cherche une solution depuis plusieurs jours sans success !
Je suis novice en ce qui concerne l’arduino et la compilation.

Le comptage ce trouve au début de void loop() {

int trig1 = 11;   //
int echo1 = 12; //
int echo_read1;//////CAPTEUR 1 ALLUMAGE
int cm1;          //
int etat1;        //

int trig2 = 3;    //
int echo2 = 4;  //
int echo_read2;/////CAPTEUR 2 ALLUMAGE
int cm2;          //
int etat2;        //

int trigARR1 = 8;    //
int echoARR1 = 7;  //
int echo_readARR1;/////CAPTEUR 1 EXTINCTION
int cmARR1;          //
int etatARR1;        //

int trigARR2 = 10;  //
int echoARR2 = 9;  //
int echo_readARR2;/////CAPTEUR 2 EXTINCTION
int cmARR2;          //
int etatARR2;        //

const int lampe_piece1 =5; // led_BLEU = pin 5
const int lampe_piece2 =6; // led_ROUGE = pin 6

int NB_de_personne_piece1; // NB de personne presentes dans la piece1
int NB_de_personne_piece2; // NB de personne presentes dans la piece2

//const int lampe_COMPTEUR = 2;
//const int lampe_DECOMPTEUR = 13;



void setup() {
  // put your setup code here, to run once:
  
  pinMode(trig1, OUTPUT);  //
  digitalWrite(trig1, LOW);  /////CAPTEUR 1 ALLUMAGE
  pinMode(echo1, INPUT);   //

  pinMode(trigARR1, OUTPUT);  //
  digitalWrite(trigARR1, LOW);  //////CAPTEUR 2 ALLUMAGE
  pinMode(echoARR1, INPUT);   //

  pinMode(trig2, OUTPUT);  //
  digitalWrite(trig2, LOW);  //////CAPTEUR 1 EXTINCTION
  pinMode(echo2, INPUT);   //

  pinMode(trigARR2, OUTPUT);  //
  digitalWrite(trigARR2, LOW);  /////CAPTEUR 2 EXTINCTION
  pinMode(echoARR2, INPUT);   //

  pinMode(lampe_piece1, OUTPUT); //LAMPE PIECE 1
  pinMode(lampe_piece2, OUTPUT); //LAMPE PIECE 2

//pinMode(lampe_COMPTEUR, OUTPUT);    //LAMPE FICTIF POUR COMPTAGE DES PASSAGES
//pinMode(lampe_DECOMPTEUR, OUTPUT);//LAMPE FICTIF POUR DECOMPTAGE DES PASSAGES

  Serial.begin(115200);

  }


void loop() {
  

 if (etat1 == 1) {                      //                                          //
     NB_de_personne_piece1++;  /////COMPTEUR PIECE1         //
     //NB_de_personne_piece2--; //                                          //
     }                                                                                   ///// EN TEST
  if (etatARR1 == 1) {                 //                                       //
     NB_de_personne_piece1--;     /////DECOMPTEUR PIECE1      //
     //NB_de_personne_piece2++;//                                       //
     }

    
    if (NB_de_personne_piece1==0){   // SI NB_de_personne_piece1==0
     digitalWrite(lampe_piece2, LOW); //ALORS led_arduino_eteinte
     }
   else  if (NB_de_personne_piece1>0){  //SI NB_de_personne_piece1 EST superieur a 0
     digitalWrite(lampe_piece2, HIGH);    //ALORS led arduino allumer
     }

    if (NB_de_personne_piece2==0){      //SI NB_de_personne_piece2==0
     digitalWrite(lampe_piece1, LOW);    //ALORS led_bleu_eteinte
     }
   else if (NB_de_personne_piece2>0){  //SI NB_de_personne_piece2 EST superieur a 0
     digitalWrite(lampe_piece1, HIGH);   //ALORS led bleu allumer
     } 


     Serial.print (NB_de_personne_piece1);       //AFFICHAGE MONITEUR DE NB_de_personne_piece1
     Serial.println (" personne dans la piece1"); //AFFICHAGE MONITEUR DE NB_de_personne_piece1

     Serial.print (NB_de_personne_piece2);       //AFFICHAGE MONITEUR DE NB_de_personne_piece2
     Serial.println (" personne dans la piece2"); //AFFICHAGE MONITEUR DE NB_de_personne_piece2




               //////////CAPTEURS MARCHE//////////

  if (cm1 >= 20){        //&& (cm1 <= 40))     //SI L'OBJET EST A PLUS DE 20cm DU CAPTEUR
    etat1 = 0;}                                           //ALORS etat1 = 0

    else if (cm1 <= 20){     //&& (cm1 <= 40))      //sinon si moin de 10 cm
             etat1 = 1;}                                        //ALORS etat1 = 1

  if (cm2 >= 20){      //&& (cm2 <= 40))      //SI L'OBJET EST A PLUS DE 20cm DU CAPTEUR
      etat2 = 0;}                                        //ALORS etat2 = 0

    else if (cm2 <= 20){    //&& (cm2 <= 40))      //sinon si moin de 10 cm
             etat2 = 1;}                                       //ALORS etat2 = 1 }

/* 

    if (etat1 = 1){
            digitalWrite(lampe_COMPTEUR, HIGH) ; 
   }
/* *//* */


               ////////// CAPTEURS ARRET//////////

  if (cmARR1 >= 20){        //&& (cmARR1 <= 40))      //SI L'OBJET EST A PLUS DE 20cm DU CAPTEUR
      etatARR1 = 0;}                      //ALORS etatARR1 = 0

    else if (cmARR1 <= 20){      //&& (cmARR1 <= 40))      //SINON SI L'OBJET EST A MOINS DE 20cm DU CAPTEUR
             etatARR1 = 1;}                                               //ALORS etatARR1 = 1

  if (cmARR2 >= 20){      //&& (cmARR2 <= 40))      //SI L'OBJET EST A PLUS DE 20cm DU CAPTEUR
      etatARR2 = 0;}                                             //ALORS etatARR2 = 1

    else if (cmARR2 <= 20){      //&& (cmARR2 <= 40))     //SINON SI L'OBJET EST A MOINS DE 20cm DU CAPTEUR
             etatARR2 = 1;}                                              //ALORS etatARR2 = 0}


/* 
    if (etatARR1 = 1){
             digitalWrite (lampe_DECOMPTEUR, HIGH);   
             }
/* */


    Serial.print("état1 : ");//AFFICHAGE MONITEUR DE état1
    Serial.println(etat1);   //AFFICHAGE MONITEUR DE état1
    //delay(15);               //PAUSE DE 15 milliseconde

    Serial.print("état2 : ");//AFFICHAGE MONITEUR DE état2
    Serial.println(etat2);   //AFFICHAGE MONITEUR DE état2
    //delay(15);               //PAUSE DE 15 milliseconde



              //////////MESURE DES DISTANCES EN CM//////////

    digitalWrite(trig1, HIGH);               //
    delayMicroseconds(10);                  //
    digitalWrite(trig1, LOW);         //////ALGORITHME POUR LA MESURE EN CM DU CAPTEUR 1 ALLUMAGE
    echo_read1 = pulseIn(echo1, HIGH);//
    cm1 = echo_read1 / 58;                 //

    digitalWrite(trig2, HIGH);          //
    delayMicroseconds(10);            //
    digitalWrite(trig2, LOW);         //////ALGORITHME POUR LA MESURE EN CM DU CAPTEUR 2 ALLUMAGE
    echo_read2 = pulseIn(echo2, HIGH);//
    cm2 = echo_read2 / 58;                 //

    digitalWrite(trigARR1, HIGH);           //
    delayMicroseconds(10);                   //
    digitalWrite(trigARR1, LOW); //////ALGORITHME POUR LA MESURE EN CM DU CAPTEUR 1 EXTINCTION
    echo_readARR1 = pulseIn(echoARR1, HIGH);//
    cmARR1 = echo_readARR1 / 58;                  //

    digitalWrite(trigARR2, HIGH);           //
    delayMicroseconds(10);                   //
    digitalWrite(trigARR2, LOW); //////ALGORITHME POUR LA MESURE EN CM DU CAPTEUR 1 EXTINCTION
    echo_readARR2 = pulseIn(echoARR2, HIGH);//
    cmARR2 = echo_readARR2 / 58;                 //


    Serial.print("Distance en cm1 : ");//AFFICHAGE MONITEUR DE cm1
    Serial.println(cm1);                    //AFFICHAGE MONITEUR DE cm1
    //delay(15);                              //PAUSE DE 15 milliseconde

    Serial.print("Distance en cm2 : ");//AFFICHAGE MONITEUR DE cm2
    Serial.println(cm2);                    //AFFICHAGE MONITEUR DE cm2
    //delay(15);                              //PAUSE DE 15 milliseconde

    Serial.print("Distance en cmARR1 : ");//AFFICHAGE MONITEUR DE cmARR1
    Serial.println(cmARR1);                    //AFFICHAGE MONITEUR DE cmARR1

    Serial.print("Distance en cmARR2 : ");//AFFICHAGE MONITEUR DE cmARR1
    Serial.println(cmARR2);                    //AFFICHAGE MONITEUR DE cmARR1

pepe Merci beaucoup pour cette solution :slight_smile:
ça fonctionne parfaitement !!!

Résolu pas Résolut :slight_smile:

ça pique un peu les yeux là....

ikari:
pepe Merci beaucoup pour cette solution :slight_smile:
ça fonctionne parfaitement !!!

Bonjour,

Pour passer en "résolu" c'est le titre du premier message qu'il faut changer (c'est celui qui apparaît dans la liste des sujet) et non celui du message courant.