#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>
#define SOUND_SPEED 0.034
int lcdColumns = 16;
int lcdRows = 2;
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
int distance;
int distance1;
int A = 0;
int pos = 0;
const int trigPin = 5;
const int echoPin = 18;
const int trigPin1 = 26;
const int echoPin1 = 25;
const int led = 12;
const int led1 = 14;
long duration;
long duration1;
float distanceCm;
float distanceCm1;
Servo myservo;
void setup() {
myservo.attach(4);
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Wel-come");
lcd.setCursor(0, 1);
lcd.print("Calculating:");
myservo.write(pos);
delay (4000);
lcd.clear();
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * SOUND_SPEED / 2;
/*distance = distanceCm / 4;*/
Serial.print("distance(%): ");
Serial.println(distance);
delay(3000);
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distance1 = duration1 * SOUND_SPEED / 2;
/* distance1 = distanceCm1 / 4;*/
Serial.print("distance(%): ");
Serial.println(distance1);
lcd.setCursor(0, 0);
lcd.print("distance:");
lcd.setCursor(11, 0);
lcd.print(distance);
lcd.setCursor(14, 0);
lcd.print("%");
if(distance<100){
if(distance1<100){
Serial.println("Incoming Person");
lcd.setCursor(0, 1);
lcd.println("Incoming Person");
A = A++;
}
}
if(distance1<100){
if(distance<100){
Serial.println("Outgoing Person");
lcd.setCursor(0, 1);
lcd.println("Outgoing Person");
A = A--;
}
}
Serial.println(A);
if (A=0){
pos=pos+90;
Serial.println(pos);
lcd.setCursor(0, 1);
myservo.write(pos);
delay(15);
pos = 0;
}
delay(1000);
/*if(distance1<10){
digitalWrite(led1, HIGH);
delayMicroseconds(2);
}
if (distance < 10) {
A = 0;
}
if (A == 0 ) {
digitalWrite(led, HIGH);
delayMicroseconds(2);
Serial.println("Motion Detected");
lcd.setCursor(0, 1);
lcd.print("Motion Detected");
}
if (distance > 95) {
digitalWrite(led, LOW);
delayMicroseconds(2);
Serial.println("Unchanged .....");
lcd.setCursor(0, 1);
lcd.print("Unchanged .....");
A = 1;
}*/
}