Ho un problema con rilevazione e conteggio tramite sensore di distanza

Scusatemi per l'ignoranza, ma ho iniziato da poco ad utilizzare Arduino. Per un progetto scolastico di fine anno, ci è stato chiesto di fare un programma che rilevasse quante donne entrano in un negozio. Ho pensato di utilizzare 2 sensori, uno per l'entrata e uno per l'uscita, ma ecco il problema: se la persona si ferma davanti al sensore, il programma continua a contare come se entrassero più persone, e non so come fare per farlo smettere di contare finché la persona non si è mossa. Ho un sensore ad infrarossi, se può servire.
Ecco il codice che ho sviluppato:

#include <LiquidCrystal.h>
#define trigPin1 7
#define echoPin1 8
#define trigPin2 9
#define echoPin2 10
bool personaContata = false;
long durata1, cm1, durata2, cm2;
int donne = 0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  pinMode(trigPin1, OUTPUT); //
  pinMode(echoPin1, INPUT);  //Indico i vari input e output
  pinMode(trigPin2, OUTPUT); //
  pinMode(echoPin2, INPUT);  //
}

void loop() {
  
  digitalWrite(trigPin1, LOW);         //
  delayMicroseconds(2);                //
  digitalWrite(trigPin1, HIGH);        //Prendo i valori di cm1
  delayMicroseconds(10);               //
  digitalWrite(trigPin1, LOW);         //
  durata1 = pulseIn(echoPin1, HIGH);   //
  cm1 = durata1 / 58;
  Serial.print("Cm1 = ");     //Stampo nella seriale il valore trovato dal primo sensore
  Serial.println(cm1);
  Serial.println();

  digitalWrite(trigPin2, LOW);       //
  delayMicroseconds(2);              //
  digitalWrite(trigPin2, HIGH);      //Prendo i valori di cm2
  delayMicroseconds(10);             //
  digitalWrite(trigPin2, LOW);       //
  durata2 = pulseIn(echoPin2, HIGH); //
  cm2 = durata2 / 58;
  Serial.print("Cm2 = ");    //Stampo nella seriale il valore trovato dal secondo sensore
  Serial.println(cm2);       
  Serial.println();

  if (cm1 <= 100) { //Condizione per aumentare il numero di donne (entrata)
    donne += 1;
    delay(500);
  }
  if (cm2 <= 100) { //Condizione per diminuire il numero di donne (uscita)
    donne -= 1;
    delay(500);
  }

  for (int i = 0; i < 5; i++) {        //
    lcd.clear();                       //
    lcd.setCursor(0, 0);               //Scrivo sullo schermo lcd quante donne sono presenti all'interno del negozio
    lcd.print("Donne presenti:");      //
    lcd.setCursor(0, 1);               //
    lcd.print(donne);                  //
  }
}

Ti segnalo che, nella sezione in lingua Inglese, si può scrivere solo in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato.

Grazie.

A quanto detto da pert aggiungo ...

... cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO della sezione Italiana del forum, (... e, per evitare future possibili discussioni/incomprensioni, prestando sempre molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE (... quello che vedi in blu è un link, fai click su di esso per raggiungere la discussione) spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. :wink:

P.P.S.: Evitate di utilizzare la traduzione automatica fatta dal browser ... vi impedisce di capire la lingua della sezione dove andate a scrivere ...