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