#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
Servo servo1;
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int pinLED1 = 2;
//sensor suhu
#define DHTPIN 11
#define DHTTYPE DHT22
//sensor jarak
const int pinTRIGGER = 8;
const int pinECHO = 9;
//sensor kapasitas tempat sampah
const int pinTRIGGER2 = 7;
const int pinECHO2 = 6;
const int SERVO= 4;
DHT dht (DHTPIN, DHTTYPE);
float durasi, jarak, durasi2, jarak2;
// ======================= program pengaturan awal ====================== //
void setup()
{
lcd.init();
lcd.backlight();
Serial.begin(9600);
lcd.setCursor(0,0);
lcd.print(" TEMPAT SAMPAH ");
lcd.setCursor(0,1);
lcd.print(" OTOMATIS ");
delay(2000);
lcd.clear();
servo1.attach(SERVO);
dht.begin();
pinMode(pinTRIGGER, OUTPUT);
pinMode(pinECHO, INPUT);
pinMode(pinTRIGGER2, OUTPUT);
pinMode(pinECHO2, INPUT);
pinMode(pinLED1, OUTPUT);
delay(1000);
}
void loop()
{
digitalWrite(pinTRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(pinTRIGGER, LOW);
durasi = pulseIn(pinECHO, HIGH);
jarak = ((durasi * 0.034) / 2);
digitalWrite(pinTRIGGER2, HIGH);
delayMicroseconds(10);
digitalWrite(pinTRIGGER2, LOW);
durasi2 = pulseIn(pinECHO2, HIGH);
jarak2 = ((durasi2 * 0.034) / 2);
//rumus
float tinggitempatsampah = jarak2/20;
float kapasitas = tinggitempatsampah*100;
float t = dht.readTemperature();
float h = dht.readHumidity();
delay(1000);
if (jarak <= 15)
{
servo1.write(90);
lcd.setCursor(0,0);
lcd.print(" TERBUKA ");
lcd.setCursor(0,1);
lcd.print("Jarak: "+ String(jarak)+"cm");
delay(1100);
lcd.clear();
}
else
{
servo1.write(0);
lcd.setCursor(0,0);
lcd.print(" TERTUTUP ");
lcd.setCursor(0,1);
lcd.print("Jarak: "+ String(jarak)+"cm");
delay(1100);
lcd.clear();
}
if(kapasitas >= 100)
{
lcd.setCursor(0,0);
lcd.print(" PENUH ");
lcd.setCursor(0,1);
lcd.println("Kapasitas:"+ String(kapasitas)+"%");
digitalWrite(pinLED1, HIGH);
delay(1100);
lcd.clear();
}
else{
lcd.setCursor(0,1);
lcd.print("Kapasitas:"+ String(kapasitas)+"%");
digitalWrite(pinLED1, LOW);
delay(1100);
lcd.clear();
}
//tampilan suhu dan kelembapan
lcd.setCursor(0,0);
lcd.println("Suhu:");
lcd.print(t);
lcd.println(" C");
lcd.setCursor(0,1);
lcd.println("Lembab:");
lcd.print(h);
lcd.println(" %");
delay(1100);
lcd.clear();
Serial.println("Kapasitas: "+ String(kapasitas)+" %");
Serial.print("Jarak: ");
Serial.println(jarak);
Serial.println("Suhu: ");
Serial.print(t);
Serial.println(" C");
Serial.println("Lembab: ");
Serial.print(h);
Serial.println(" %");
delay(500);
}