#include <LiquidCrystal_I2C.h>
#include <Servo.h>
Servo myservo;
int pos = 0; // servo mula
#define echoPin 5 // Echo Pin of the ultrasonic sensor
#define trigPin 6 // Trigger Pin of the ultrasonic sensor
int pirState = 0; int pirPin = 11;int calib_time = 30;
const unsigned long eventTime_1 = 1000;const unsigned long eventTime_2 = 5000;
unsigned long prev_time1 = 0;unsigned long prev_time2 = 0;
int led1 = 2;
int led2 = 3;
int led3 = 4;
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
byte Penuh1[8]= {B00000,B00100,B00100,B11111,
B00100,B00100,B00000,B00000}; // Row 1, Col 0
byte Penuh2[8]= {B00000,B00000,B00000,B00000,
B11111,B11111,B11111,B11111};// Row 1, Col 2
byte Penuh3[8]= {B00000,B00000,B00000,B00000,
B11000,B11110,B11111,B11111};// Row 1, Col 1
byte Penuh4[8]= {B01111,B01111,B01111,B01111,
B01111,B01111,B01111,B01111};
byte Penuh5[8] = {B01111,B01111,B01111,B01111,
B01111,B01111,B00111,B00011};
byte Penuh6[8] = {B11111,B11111,B11111,B11111,
B11111,B11111,B11111,B11111};
byte Penuh7[8] = {B11110,B11110,B11110,B11110,
B11110,B11110,B11110,B11110};
byte Penuh8[8] = {B11110,B11110,B11110,B11110,
B11110,B11110,B11100,B11000};
uint8_t Separuh2[8] = {B00000,B00000,B00000,B00000,
B11111,B11111,B11111,B11111}; // Penutup Tengah
uint8_t Separuh3[8] = {B00000,B00000,B00000,B00000,
B11000,B11110,B11111,B11111}; // Penutup Kanan
uint8_t Separuh4[8] = {B01000,B01000,B01000,B01000,
B01000,B01000,B01111,B01111}; // Kiri Tengah
uint8_t Separuh5[8] = {B00000,B00000,B00000,B00000,
B00000,B00000,B11111,B11111}; // Tengah
uint8_t Separuh6[8] = {B00010,B00010,B00010,B00010,
B00010,B00010,B11110,B11110}; // Kanan Tengah
uint8_t Separuh7[8] = {B01111,B01111,B01111,B01111,
B01111,B01111,B00111,B00011}; // Kiri bawah
uint8_t Separuh8[8] = {B11111,B11111,B11111,B11111,
B11111,B11111,B11111,B11111}; // Tengah bawah
uint8_t Separuh9[8] = {B11110,B11110,B11110,B11110,
B11110,B11110,B11100,B11000}; // Kanan bawah
void setup()
{
Serial.begin(9600);
lcd.begin(20, 4);
//myservo.attach(13);
//myservo.write(pos); // attaches the servo on pin 9 to the servo object
pinMode(trigPin, OUTPUT);pinMode(echoPin, INPUT);
pinMode(pirPin, INPUT);pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);pinMode(led3, OUTPUT);
}
float readDistanceCM() {
digitalWrite(trigPin, LOW);delayMicroseconds(2);
digitalWrite(trigPin, HIGH);delayMicroseconds(10);digitalWrite(trigPin, LOW);
int duration = pulseIn(echoPin, HIGH);return duration * 0.034 / 2;
}
void loop()
{
pirState = digitalRead(pirPin);
myservo.attach(13);
if (pirState == 1){
myservo.attach(13);
myservo.write(pos);
delay(1000);
myservo.write(100);
}
float distance = readDistanceCM();
if(bool isNearby = distance < 101){
//lcd.clear();
//delay(100);
myservo.detach();
lcd.setCursor(0,0);lcd.print(" ");
lcd.setCursor(0,2);lcd.print(" ");lcd.setCursor(0,1);lcd.print(" ");
lcd.setCursor(0,3);lcd.print(" ");
lcd.setCursor(0,4);lcd.print(" ");
// myservo.write(100);
lcd.createChar(1,Penuh1);lcd.createChar(2,Penuh2);
lcd.createChar(3,Penuh3);lcd.createChar(4,Penuh4);lcd.createChar(5,Penuh5);
lcd.createChar(6,Penuh6);lcd.createChar(7,Penuh7);lcd.createChar(8,Penuh8);
lcd.backlight();
lcd.setCursor(0,0);lcd.write(1);
lcd.setCursor(1,0);lcd.write(2);lcd.setCursor(2,0);lcd.write(3);
lcd.setCursor(0,1);lcd.write(4);lcd.setCursor(0,2);lcd.write(5);
lcd.setCursor(1,1);lcd.write(6);lcd.setCursor(1,2);lcd.write(6);
lcd.setCursor(2,1);lcd.write(7);lcd.setCursor(2,2);lcd.write(8);
lcd.setCursor(5,0);lcd.print("SAMPAH PENUH");
lcd.setCursor(5,2);lcd.print(" Kesulitan");
lcd.setCursor(5,3);lcd.print(" dikesali...");
delay(1000);
lcd.noBacklight();
delay(900);
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
else if(bool isNearby = distance < 299){
lcd.backlight();
lcd.createChar(2,Separuh2);lcd.createChar(4,Separuh4);lcd.createChar(5,Separuh5);lcd.createChar(6,Separuh6);
lcd.createChar(7,Separuh7);lcd.createChar(8,Separuh8);lcd.createChar(9,Separuh9);
lcd.setCursor(0,0);lcd.write(2);
lcd.setCursor(1,0);lcd.write(2);lcd.setCursor(2,0);lcd.write(2);
lcd.setCursor(0,1);lcd.write(4);lcd.setCursor(1,1);lcd.write(5);
lcd.setCursor(2,1);lcd.write(6);lcd.setCursor(0,2);lcd.write(7);
lcd.setCursor(1,2);lcd.write(8);lcd.setCursor(2,2);lcd.write(9);
lcd.setCursor(0,3); lcd.print(" ");
lcd.setCursor(4,1);lcd.print(">");
lcd.setCursor(5,1);lcd.print(" SAMPAH 50%");
lcd.setCursor(19,2);lcd.print(" ");
lcd.setCursor(3,0);lcd.print(" -------------- ");
lcd.setCursor(18,1);lcd.print("");lcd.setCursor(16,1);lcd.print("");
lcd.setCursor(3,2);lcd.print(" --------------");
delay(3000);
digitalWrite(led2, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led3, LOW);
}
else{
uint8_t baris1[8] = {
B00000,
B00000,
B00000,
B11111,
B11111,
B00000,
B00000,
B00000
};
lcd.setCursor(0,0);lcd.write(1);lcd.setCursor(1,0);lcd.write(1);lcd.setCursor(2,0);lcd.write(1);lcd.setCursor(3,0);lcd.write(1);lcd.setCursor(4,0);lcd.write(1);lcd.setCursor(5,0);lcd.write(1);lcd.setCursor(6,0);lcd.write(1);lcd.setCursor(7,0);lcd.write(1);lcd.setCursor(8,0);lcd.write(1);lcd.setCursor(9,0);lcd.write(1);lcd.setCursor(10,0);lcd.write(1);lcd.setCursor(11,0);lcd.write(1);lcd.setCursor(12,0);lcd.write(1);lcd.setCursor(13,0);lcd.write(1);lcd.setCursor(14,0);lcd.write(1);lcd.setCursor(15,0);lcd.write(1);lcd.setCursor(16,0);lcd.write(1);lcd.setCursor(17,0);lcd.write(1);lcd.setCursor(18,0);lcd.write(1);lcd.setCursor(19,0);lcd.write(1);
lcd.setCursor(0,3);lcd.write(1);lcd.setCursor(1,3);lcd.write(1);lcd.setCursor(2,3);lcd.write(1);lcd.setCursor(3,3);lcd.write(1);lcd.setCursor(4,3);lcd.write(1);lcd.setCursor(5,3);lcd.write(1);lcd.setCursor(6,3);lcd.write(1);lcd.setCursor(7,3);lcd.write(1);lcd.setCursor(8,3);lcd.write(1);lcd.setCursor(9,3);lcd.write(1);lcd.setCursor(10,3);lcd.write(1);lcd.setCursor(11,3);lcd.write(1);lcd.setCursor(12,3);lcd.write(1);lcd.setCursor(13,3);lcd.write(1);lcd.setCursor(14,3);lcd.write(1);lcd.setCursor(15,3);lcd.write(1);lcd.setCursor(16,3);lcd.write(1);lcd.setCursor(17,3);lcd.write(1);lcd.setCursor(18,3);lcd.write(1);lcd.setCursor(19,3);lcd.write(1);
//lcd.setCursor(0,0); lcd.write(" ");
lcd.setCursor(0,1); lcd.print(" ");
lcd.setCursor(0,2); lcd.print(" ");
//lcd.setCursor(0,3); lcd.print(" ");
//lcd.clear(); anti-flickr,ganti LCD clear
digitalWrite(led3, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
//myservo.attach(13);
lcd.createChar(0001,baris1);
pirState = digitalRead(pirPin);
if (pirState == 1)
myservo.attach(13);
myservo.write(100);
lcd.backlight();lcd.setCursor(4,1);lcd.print("TONG SAMPAH");lcd.setCursor(6,2);lcd.print(" PINTAR");delay(2000);
lcd.setCursor(4,1);lcd.print(" ");lcd.setCursor(6,2);lcd.print(" ");
lcd.setCursor(1,1);lcd.print("Guna Secara Cermat");
delay(2000);lcd.setCursor(1,1);lcd.print(" ");
noTone(12);
lcd.setCursor(0,1);
lcd.print(">");
delay(50);
lcd.setCursor(1,2);
lcd.write(0001);
delay(50);
lcd.setCursor(2,1);
lcd.write(0001);
delay(50);
lcd.setCursor(3,2);
lcd.write(0001);
delay(50);
lcd.setCursor(4,1);
lcd.print(">");
delay(50);
lcd.setCursor(1,2);
lcd.write(0001);
delay(50);
lcd.setCursor(5,2);
lcd.write(0001);
delay(50);
lcd.setCursor(6,1);
lcd.write(0001);
delay(50);
lcd.setCursor(7,2);
lcd.print(">");
delay(50);
lcd.setCursor(8,1);
lcd.write(0001);
delay(50);
lcd.setCursor(9,2);
lcd.write(0001);
delay(50);
lcd.setCursor(10,1);
lcd.write(0001);
delay(50);
lcd.setCursor(11,2);
lcd.print(">");
delay(50);
lcd.setCursor(12,1);
lcd.write(0001);
delay(50);
lcd.setCursor(13,2);
lcd.write(0001);
delay(50);
lcd.setCursor(14,1);
lcd.print(">");
delay(50);
lcd.setCursor(15,2);
lcd.write(0001);
delay(50);
lcd.setCursor(16,1);
lcd.write(0001);
delay(50);
lcd.setCursor(17,2);
lcd.write(0001);
delay(50);
lcd.setCursor(18,1);
lcd.print(">");
lcd.setCursor(19,2);
lcd.write(0001);
delay(30);
lcd.setCursor(19,2);
lcd.print(" ");
delay(60);
lcd.setCursor(19,2);
lcd.write(0001);
//lcd.clear(); // untuk sampah penuh,50%,healthy state
}
//delay(100);
//lcd.clear(); // untuk sampah penuh,50%,healthy state
}