#include <LiquidCrystal_I2C.h> //dengan adanya library akan memudahkan
#include <RTClib.h>
LiquidCrystal_I2C lcd(0x27,16,2); //untuk alamat Lcd 0x27
RTC_DS1307 RTC;
//RTC_DS3231 RTC;
const int buzzer=11 ;//membuat variable umtuk buzzer
void setup() {
lcd.init(); // inisiasi LCD
lcd.backlight(); //untuk menyalakan backlight lcd
RTC.begin(); //mengambil data waktu laptop atau komputer secara otomatis
pinMode(buzzer, OUTPUT);
lcd.setCursor(4,0); //untuk baris dan kolom di lcd
lcd.print("Project"); // untuk menghilangkan kalimat di lcd
lcd.setCursor(2,1);
lcd.print("Jam Digital");
delay("1000000");
lcd.clear(); //menghilangkan tulisan di lcd
}
void loop() {
DateTime baca_rtc = RTC.now();
tampilan_utama();
int alarm_jam=14;
int alarm_menit=34;
if (baca_rtc.hour() == alarm_jam && baca_rtc.minute() == alarm_menit)
{
tone(buzzer,5000);
lcd.setCursor(0,1);
lcd.print(" INDII ");
delay(5000);
lcd.clear();
while (baca_rtc.hour() == alarm_jam && baca_rtc.minute() == alarm_menit) //
{
tampilan_utama();
noTone(buzzer);
}
}
else
{
noTone(buzzer);
}
}
void tampilan_utama() //berfungsi sebagai pengembalian data untuk menampilkan aja
{
DateTime baca_rtc = RTC.now();
lcd.setCursor(0,0);
lcd.print("DATE: ");
lcd.print(baca_rtc.year());
lcd.print("/");
lcd.print(baca_rtc.month());
lcd.print("/");
lcd.print(baca_rtc.day());
lcd.setCursor(0,1);
lcd.print("TIME; ");
lcd.print(baca_rtc.hour());
lcd.print("/");
lcd.print(baca_rtc.minute());
lcd.print("/");
lcd.print(baca_rtc.second());
lcd.print(" ");
}
// while digunakan apabila membuat kondisi berulang selama bernilai benar
// if digunakan suatu kondisi jika benar maka akan menjalankan program yang kita