#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <BlynkSimpleStream.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define inSensor 2
#define outSensor 3
#define inSensorpr 17
#define outSensorpr 16
#define ledPin 4
int in;
int out;
int count;
int sensor1State = 0;
int lastSensor1State = 0;
int sensor2State = 0;
int lastSensor2State = 0;
void setup()
{
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128x64)
delay(2000);
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(20, 20);
display.print("Visitor");
display.setCursor(20, 40);
display.print("Counter");
display.display();
delay(3000);
}
void loop()
{
sensor1State = digitalRead(outSensor);
if (sensor1State != lastSensor1State)
{
if (sensor1State == HIGH){
count++;
in = in+1;
}
delay(500);
}
sensor2State = digitalRead(inSensor);
if (sensor2State != lastSensor2State){
{
count--;
out = out+1;
}
delay(500);
}
if (count <= 0)
{
digitalWrite(ledPin, LOW);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 15);
display.print("No Visitor");
display.setCursor(5, 40);
display.print("Light Off");
display.display();
delay(500);
}
else if (count >= 400)
{
digitalWrite(ledPin, HIGH);
display.clearDisplay();
display.setTextSize(1.9);
display.setTextColor(WHITE);
display.setCursor(15, 15);
display.print("No More Visitor");
display.setCursor(20, 40);
display.print("Please Wait!");
display.display();
delay(500);
}
else
{
digitalWrite(ledPin, HIGH);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(15, 0);
display.print("Current Visitor");
display.setTextSize(2);
display.setCursor(50, 15);
display.print(count);
display.setTextSize(1);
display.setCursor(0, 40);
display.print("IN: ");
display.print(in);
display.setTextSize(1);
display.setCursor(70, 40);
display.print("OUT: ");
display.print(out);
display.display();
delay(500);
}
lastSensor1State = sensor1State;
lastSensor2State = sensor2State;
}