#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27, 16, 1);
// Thresholds
int alpha = 100;
int beta = 200;
int trig1 = 5;
int echo1 = 4;
int trig2 = 9;
int echo2 = 8;
// int servopin = 7;
Servo servo_pin;
int red = A0;
int green = A1;
void setup()
{
Serial.begin(9600);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
servo_pin.attach(7);
pinMode(trig1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(trig2, OUTPUT);
pinMode(echo2, INPUT);
// LCD
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(4,0);
lcd.print("AUTOMATED ");
lcd.setCursor(3,1);
lcd.print("GARBAGE BIN");
delay(2500);
lcd.clear();
}
void loop()
{
digitalWrite(trig1, HIGH);
digitalWrite(trig2, HIGH);
delayMicroseconds(10);
digitalWrite(trig1, LOW);
digitalWrite(trig2, LOW);
delayMicroseconds(10);
//Ultrasonic 1
int duration1 = pulseIn(echo1, HIGH);
int distance1 = duration1*0.17;
// Ultrasoni 2
// int duration2 = pulseIn(echo2, HIGH);
//int distance2 = duration2*0.17;
if (alpha > distance1)
{
digitalWrite(red, HIGH);
digitalWrite(green, LOW);
servo_pin.write(0);
lcdfull();
}
else
{
lcdempty();
digitalWrite(red, LOW);
digitalWrite(green, HIGH);
servo_pin.write(120);
}
}
// functions
// servo function
void servo()
{
servo_pin.write(120);
delay(200);
}
// display function when bin full
void lcdfull()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("BIN IS FULL");
lcd.setCursor(0,1);
lcd.print("LID IS CLOSED");
delay(1000);
lcd.clear();
}
// display function for bin empty
void lcdempty()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("BIN IS EMPTY");
lcd.setCursor(0,1);
lcd.print("LID IS OPEN");
delay(1000);
lcd.clear();
}