#include <LiquidCrystal.h>
#include<Servo.h>
Servo myservo;
const int rs=12,en=11,d4=5,d5=4,d6=3,d7=2;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
int trigPin=8;
int echoPin=9;
long duration;
int distance[5];
int avg;
int sw=7;
int buzzer=13;
int k=0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
lcd.begin(16,2);
pinMode(trigPin , OUTPUT);
pinMode(echoPin , INPUT);
pinMode(sw , INPUT);
pinMode(buzzer , OUTPUT);
myservo.attach(6);
}
void loop() {
// put your main code here, to run repeatedly:
lcd.clear();
for(int i=0;i<5;i++){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin , HIGH);
distance[i] = duration * 0.034/2;
}
avg=(distance[0]+distance[1]+distance[2]+distance[3]+distance[4])/5;
if(digitalRead(sw)==0){
if(avg<50){
myservo.write(90);
lcd.setCursor(0,0);
lcd.print("DUSTBIN OPENED..");
if(k==0){
digitalWrite(buzzer , HIGH);
k=1;
tone(13,100);
delay(100);
digitalWrite(buzzer , LOW);
noTone(13);
}
}
else{
k=0;
myservo.write(0);
lcd.setCursor(0,0);
lcd.print("DUSTBIN CLOSED..");
digitalWrite(buzzer , LOW);
noTone(13);
}
}
else{
myservo.write(0);
lcd.setCursor(0,0);
lcd.print("DUSTBIN IS FULL..");
lcd.setCursor(0,1);
lcd.print("DUSTBIN CLOSED..");
digitalWrite(buzzer , HIGH);
tone(13, 1000);
}
delay(1500);
}