#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
#define in 3
#define out 2
#define relay 4
#define red 5
#define green 6
int count=0;
void IN()
{
count++;
lcd.clear();
lcd.print("Person In Room:");
lcd.setCursor(0,1);
lcd.print(count);
delay(1000);
}
void OUT()
{
count--;
lcd.clear();
lcd.print("Person In Room:");
lcd.setCursor(0,1);
lcd.print(count);
delay(1000);
}
void setup()
{
lcd.begin(16,2);
lcd.backlight();
lcd.print("Visitor Counter");
delay(2000);
pinMode(in, INPUT);
pinMode(out, INPUT);
pinMode(relay, OUTPUT);
pinMode(red,OUTPUT);
pinMode(green,INPUT);
lcd.clear();
lcd.print("Person In Room:");
lcd.setCursor(0,1);
lcd.print(count);
}
void loop()
{
if(digitalRead(in))
IN();
if(digitalRead(out))
OUT();
if(count<=0)
{
lcd.clear();
digitalWrite(relay, LOW);
digitalWrite(green,HIGH);
digitalWrite(red,LOW);
lcd.clear();
lcd.print("Nobody In Room");
lcd.setCursor(0,1);
lcd.print("Light Is Off");
delay(200);
}if(count>=10){
lcd.clear();
digitalWrite(relay, LOW);
digitalWrite(green,LOW);
digitalWrite(red,HIGH);
lcd.clear();
lcd.print("reached the");
lcd.setCursor(0,1);
lcd.print("max count");
delay(200);
}
else
digitalWrite(relay, HIGH);
digitalWrite(green,HIGH);
digitalWrite(red,LOW);
}