#include<ESP32Servo.h>
Servo myservo;
const int trigPin=4;
const int echoPin=0;
const int led=14;
long duration;
int distance;
int percent_filled;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
myservo.attach(21);
pinMode(33, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
int open=digitalRead(33);
if(open && percent_filled<90){
myservo.write(90);
Serial.println("DustBin Open");
}
else{
myservo.write(0);
digitalWrite(trigPin,0);
delayMicroseconds(2);
digitalWrite(trigPin,1);
delayMicroseconds(10);
digitalWrite(trigPin,0);
duration=pulseIn(echoPin,HIGH);
distance=duration*0.034/2;
Serial.print("Dustbin filled: ");
percent_filled=100-distance;
if(percent_filled<0){
percent_filled=0;
}
Serial.print(percent_filled);
Serial.print("% ");
if(percent_filled>90)
Serial.print("DustBin full, please try another DustBin!!");
Serial.println();
if(distance<10){
digitalWrite(led, HIGH);
myservo.write(0);
}
else{
digitalWrite(led, LOW);
}
}
delay(10); // this speeds up the simulation
}