#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define ENTRY_SENSOR_PIN 2
#define EXIT_SENSOR_PIN 3
#define LED_PIN 4

LiquidCrystal_I2C lcd(0x27, 16, 2);

volatile int count = 0;

void setup() {
  Serial.begin(9600);

  pinMode(ENTRY_SENSOR_PIN, INPUT);
  pinMode(EXIT_SENSOR_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);

  lcd.begin(16, 2);
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("People Count:");
  lcd.setCursor(0, 1);
  lcd.print(count);

  attachInterrupt(digitalPinToInterrupt(ENTRY_SENSOR_PIN), incrementCount, RISING);
  attachInterrupt(digitalPinToInterrupt(EXIT_SENSOR_PIN), decrementCount, RISING);
}

void loop() {
  if (count > 0) {
    digitalWrite(LED_PIN, HIGH);
  } else {
    digitalWrite(LED_PIN, LOW);
  }

  lcd.setCursor(0, 1);
  lcd.print("                "); // Clear the line
  lcd.setCursor(0, 1);
  lcd.print(count);

  delay(100);

  // Debugging output
  Serial.print("Current Count: ");
  Serial.println(count);
}

void incrementCount() {
  count++;
  // Debugging output
  Serial.println("Increment Interrupt Triggered");
}

void decrementCount() {
  if (count > 0) {
    count--;
    // Debugging output
    Serial.println("Decrement Interrupt Triggered");
  }
}