#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
#include <LiquidCrystal_I2C.h>
char namaHari[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
#define trigger 9
#define echo 8
#define relay 12
int buzzer = 7;
LiquidCrystal_I2C lcd(0x27, 16, 2);
float time=0,distance=0;
void setup () {
Serial.begin(9600);
lcd.begin(16, 2);
if (!rtc.begin()) {
lcd.println("RTC tidak terhubung, Cek kembali wiring!");
while (1);
}
if (! rtc.isrunning()) {
lcd.println("RTC tidak bekerja, Setel ulang waktu!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
lcd.init();
lcd.backlight();
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
pinMode(relay,OUTPUT);
pinMode(buzzer,OUTPUT);
delay(2000);
}
void loop()
{
measure_distance();
{
lcd.setCursor(0,0);
DateTime now = rtc.now();
lcd.print(namaHari[now.dayOfTheWeek()]);
lcd.print(',');
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
lcd.println();
delay(100);}
if (distance<80)
{
digitalWrite(relay,HIGH);
digitalWrite(buzzer,HIGH);
lcd.setCursor(0,1);
lcd.print("FILLING...");
}
else
{
digitalWrite(relay,LOW);
digitalWrite(buzzer,LOW);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("EMPTY!");
}
delay(500);
}
void measure_distance()
{
digitalWrite(trigger,LOW);
delayMicroseconds(2);
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW);
delayMicroseconds(2);
time=pulseIn(echo,HIGH);
distance=time*340/20000;
}