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