#include <LiquidCrystal.h>
int trigPin1 = 3, echoPin1 = 4;
int trigPin2 = 5, echoPin2 = 6;
int people_count = 0;
bool s1 = false, s2 = false;
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
void setup() {
pinMode(echoPin1, INPUT);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(trigPin2, OUTPUT);
lcd.begin(16, 2);
lcd.print("People Count:");
}
long getDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
return duration * 0.034 / 2;
}
void loop() {
long distance1 = getDistance(trigPin1, echoPin1);
long distance2 = getDistance(trigPin2, echoPin2);
if (distance1 > 2 && !s1 && !s2) {
s1 = true;
while (getDistance(trigPin1, echoPin1) > 2) {}
}
if (s1 && distance2 > 2) {
s2 = true;
while (getDistance(trigPin2, echoPin2) > 2) {}
people_count++;
s1 = s2 = false;
delay(2000);
}
if (distance2 > 2 && !s2 && !s1) {
s2 = true;
while (getDistance(trigPin2, echoPin2) > 2) {}
}
if (s2 && distance1 > 2) {
s1 = true;
while (getDistance(trigPin1, echoPin1) > 2) {}
people_count--;
if (people_count < 0) people_count = 0;
s1 = s2 = false;
delay(2000);
}
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(people_count);
delay(100);
}