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);
  }
  
}