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); //
}
}