long duration;
int distance;
int percentFull;
int fullRate;
const int trig = 25;
const int PIR = 22;
const int echo = 21;
#include <ESP32Servo.h>
Servo serv;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
serv.attach(23);
pinMode(PIR, INPUT);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(12, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
int PIRValue = digitalRead(PIR);
// Serial.println(PIRValue);
duration = pulseIn(echo, HIGH);
distance = (0.034 * duration)/2;
percentFull = 100 - distance;
if(distance > 100){
percentFull = 0;
}
Serial.print("Percentage Full: ");
Serial.print(percentFull);
Serial.println("%");
if(PIRValue == 1 && distance > 10){
serv.write(0);
Serial.println("Go ahead and dump dirt");
delay(5000);
}else if(PIRValue == 1 && distance < 10){
Serial.println("Bin is full");
digitalWrite(12, HIGH);
serv.write(90);
}else {
serv.write(90);
digitalWrite(12, LOW);
}
}