#include <LiquidCrystal_I2C.h> //dengan adanya library akan memudahkan kita untuk pemograman
#include <RTClib.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27,16,2); // untuk alamat Lcd 0x27
RTC_DS1307 RTC;
//RTC_DS3231 RTC;
const int buzzer=11; //membuat variabel untuk buzzer
void setup() {
lcd.init(); //inisiasi lcd
lcd.backlight(); //untuk menyalankan 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 menampilkan kalimat di objek
lcd.setCursor(2,1);
lcd.print("Jam Digital");
delay(3000);
lcd.clear(); //untuk menghilangkan kalimat di lcd
}
void loop() {
DateTime baca_rtc = RTC.now();
tampilan_utama();
int alarm_jam=15;
int alarm_menit=02;
if (baca_rtc.hour() == alarm_jam && baca_rtc.minute() == alarm_menit)
{
tone(buzzer,500);
lcd.setCursor(0,1);
lcd.print(" Bangun Woi ");
delay(3000);
lcd.clear();
while (baca_rtc.hour() == alarm_jam && baca_rtc.minute() == alarm_menit)// == untuk pembanding nilai, = untuk menyimpan nilai di variabel, && untuk logic end harus terjadi pembang pertama dan kedua harus tercapai baru bisa lanjut ke program selanjutnya
{
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 makan akan menjalankan program yang kita buat, untuk else sebaliknya