#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jum'at", "Sabtu"};
int jam, menit, detik; // Tambahkan variabel jam, menit, dan detik
int tanggal, bulan, tahun;
String hari;
#define BUZZER_PIN 8 // Menggunakan pin 8 sebagai pin buzzer
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C dan ukuran layar LCD
void setup () {
Serial.begin(9600);
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Hidupkan backlight
lcd.setCursor(0, 0);
lcd.print("PKL: 00:00"); // Tambahkan tampilan awal jam, menit, dan detik
lcd.setCursor(0, 1); // Pindah ke baris kedua
lcd.print("Jumat, 29-12-23"); // Tambahkan tampilan nama
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
}
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
rtc.adjust(DateTime(2023, 10, 12, 12, 17, 50));
pinMode(BUZZER_PIN, OUTPUT);
}
void loop () {
DateTime now = rtc.now();
jam = now.hour();
menit = now.minute();
detik = now.second();
tanggal = now.day();
bulan = now.month();
tahun = now.year();
hari = daysOfTheWeek[now.dayOfTheWeek()];
// Update jam, menit, dan detik pada layar LCD
lcd.setCursor(5, 0);
lcd.print(String(jam) + ":" + String(menit) + ":" + String(detik));
// Cek apakah saatnya untuk alarm makan pada menit 7, 12, 16, dan 20
if ((menit == 1 || menit == 2 || menit == 3 || menit == 4) && detik == 0) {
alarm();
}
delay(1000);
}
void alarm() {
tone(BUZZER_PIN, 1000, 1000); // Bunyikan buzzer selama 1 detik
delay(1000); // Tunggu 1 detik
noTone(BUZZER_PIN); // Matikan buzzer
}