#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>
Servo myservo; // create servo object to control a servo
LiquidCrystal_I2C lcd(0x27,16,2);
#define trig 25 //trig=25
#define echo 26 //echo=26
#define trig1 27 //trig=25
#define echo1 14 //echo=26
#define servo 12
long duration;
float distance;
long duration1;
float distance1;
void setup()
{
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
pinMode(trig1,OUTPUT);
pinMode(echo1,INPUT);
//lcd.begin(16,2);
lcd.init();
lcd.backlight();
myservo.attach(12);
}
void loop()
{
// put your main code here, to run repeatedly:
digitalWrite(trig,LOW);
delayMicroseconds(2); //2 micro seconds
digitalWrite(trig,HIGH);
delayMicroseconds(10); //2 micro seconds
digitalWrite(trig,LOW);
duration=pulseIn(echo, HIGH); //micro.sce
distance=(0.03433*duration)/2; //distance (2 - 400) in cm
int height=map(distance,2,400,100,0);
lcd.setCursor(0,0);
lcd.println("BIN Level:");
//lcd.setCursor(0,1);
lcd.println(height);
//lcd.setCursor(3,1);
//lcd.println("%");
digitalWrite(trig1,LOW);
delayMicroseconds(2); //2 micro seconds
digitalWrite(trig1,HIGH);
delayMicroseconds(10); //2 micro seconds
digitalWrite(trig1,LOW);
duration1=pulseIn(echo1, HIGH); //micro.sce
distance1=(0.03433*duration1)/2;
if(distance1 < 20)
{
myservo.write(90);
lcd.setCursor(0,1);
lcd.println(" LID is Open");
}
else
{
myservo.write(0);
lcd.setCursor(0,1);
lcd.println("LID is Closed");
}
//lcd.clear();
//delay(1000);
}