#include <ESP32Servo.h>
int distance;
long duration;
Servo myservo;
void setup() {
pinMode(23,OUTPUT);
pinMode(22,OUTPUT);
pinMode(14,OUTPUT);
pinMode(21, INPUT);
Serial.begin(9600);
myservo.attach(19);
analogReadResolution(10);
}
void loop() {
int distance;
long duration;
int dist;
int x=digitalRead(21);
digitalWrite(14,LOW);
digitalWrite(23, LOW);
delayMicroseconds(2);
digitalWrite(23, HIGH);
delayMicroseconds(10);
digitalWrite(23, LOW);
duration=pulseIn(22,HIGH);
distance=duration*0.034/2;
if(x==1 && distance>=10)
{
Serial.println("Object detected");
myservo.write(90);
Serial.println("BIN OPEN");
delay(2000);
}
else
{
Serial.println("Object not detected");
myservo.write(0);
Serial.println("Dustbin is close");
Serial.println("distance:");
dist=100-distance;
Serial.print(dist);
Serial.println("% dustbin full");
if(distance<=10){
Serial.println("Dustbin is already full,Can't be open");
digitalWrite(14,HIGH);
}
delay(2000);
}
}