#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS1307 rtc;
// set jam bel disini
int jam[3] = {7, 7, 7};
// set menit disini
int menit[3] = {23, 25, 27};
byte alarm[8] = {
B00100,
B01110,
B01110,
B01110,
B11111,
B00100,
B00000,
B00100
};
void setup() {
pinMode(7, OUTPUT);
lcd.init();
lcd.backlight();
lcd.createChar(0, alarm);
lcd.setCursor(0,0);
lcd.print(" BELL OTOMATIS ");
lcd.setCursor(0,1);
lcd.print(" PETANI.KODING ");
delay(2000);
lcd.clear();
if (!rtc.begin()) {
lcd.setCursor(0,0);
lcd.print(" RTC ERROR!!! ");
while (1);
}
if (!rtc.isrunning()) {
lcd.setCursor(0,0);
lcd.print(" SET WAKTU!!! ");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now();
lcd.setCursor(0,0);
lcd.print(" JAM SEKARANG: ");
lcd.setCursor(3,1);
lcd.print(now.hour());
lcd.print(":");
lcd.print(now.minute());
lcd.print(":");
lcd.print(now.second());
lcd.print(" ");
if ((now.hour() == jam[0] ||
now.hour() == jam[1] ||
now.hour() == jam[2]) &&
(now.minute() == menit[0] ||
now.minute() == menit[1] ||
now.minute() == menit[2])) {
for (int i = 0; i < 5; i++) {
lcd.setCursor(0,1);
lcd.write(0);
tone(7, 500, 500);
delay(500);
lcd.setCursor(0,1);
lcd.print(" ");
noTone(7);
delay(500);
}
}
delay(1000);
}