#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 rtc;
#define led_merah 13
#define led_biru 11
#define led_hijau 9
#define tombol1 7
#define tombol2 6
#define tombol3 5
int jam,menit,detik,tanggal,bulan,tahun,menu;
char tampil[20];
void setup() {
lcd.backlight(); lcd.init();
lcd.setCursor(0,0); lcd.print("PENGUJIAN LCD");
if(rtc.begin()) {
lcd.setCursor(0,1); lcd.print("RTC OKEEE");
} else {
lcd.setCursor(0,1); lcd.print("RTC ERROR");
}
delay(2000);
lcd.clear();
Serial.begin(9600);
pinMode(led_merah, OUTPUT);
pinMode(led_biru, OUTPUT);
pinMode(led_hijau, OUTPUT);
pinMode(tombol1, INPUT_PULLUP);
pinMode(tombol2, INPUT_PULLUP);
pinMode(tombol3, INPUT_PULLUP);
rtc.adjust(DateTime(2025,12,1,8,8,8));
}
void loop() {
if(digitalRead(tombol1)==LOW) {
menu = menu + 1;
delay(300);
}
if(menu==0) {
DateTime now = rtc.now();
jam = now.hour();
menit = now.minute();
detik = now.second();
tanggal = now.day();
bulan = now.month();
tahun = now.year();
sprintf(tampil,"JAM %02d:%02d:%02d WIB",jam,menit,detik);
lcd.setCursor(0,0); lcd.print(" JAM DIGITAL ");
lcd.setCursor(0,1); lcd.print(tampil);
rtc.adjust(DateTime(tahun,bulan,tanggal,jam,menit,detik));
}
else if(menu==1) {
lcd.setCursor(0,0); lcd.print(" SETTING JAM ");
sprintf(tampil,"JAM :%02d:%02d WIB",menit,detik);
lcd.setCursor(0,1); lcd.print(tampil); delay(200);
sprintf(tampil,"JAM %02d:%02d:%02d WIB",jam,menit,detik);
lcd.setCursor(0,1); lcd.print(tampil); delay(200);
if(digitalRead(tombol2)==LOW) {
if(jam<23) jam = jam + 1;
else jam=0;
}
else if(digitalRead(tombol3)==LOW) {
if(jam>0) jam = jam - 1;
else jam=23;
}
rtc.adjust(DateTime(tahun,bulan,tanggal,jam,menit,detik));
}
else if(menu==2) {
lcd.setCursor(0,0); lcd.print(" SETTING MENIT ");
sprintf(tampil,"JAM %02d: :%02d WIB"jam,detik);
lcd.setCursor(0,1); lcd.print(tampil); delay(200);
sprintf(tampil,"JAM %02d:%02d:%02d WIB",jam,menit,detik);
lcd.setCursor(0,1); lcd.print(tampil); delay(200);
if(digitalRead(tombol2)==LOW) {
if(menit<59) menit = menit + 1;
else menit=0;
}
else if(digitalRead(tombol3)==LOW) {
if(menit>0) menit = menit - 1;
else menit=59;
}
rtc.adjust(DateTime(tahun,bulan,tanggal,jam,menit,detik));
}
else if(menu==3) {
lcd.setCursor(0,0); lcd.print(" SETTING TANGGAL");
sprintf(tampil," TGL :%02d:%04d "bulan,tahun);
lcd.setCursor(0,1); lcd.print(tampil); delay(200);
sprintf(tampil," TGL %02d:%02d:%04d ",tanggal,bulan,tahun);
lcd.setCursor(0,1); lcd.print(tampil); delay(200);
if(digitalRead(tombol2)==LOW) {
if(tanggal<31) tanggal = tanggal + 1;
else tanggal=0;
}
else if(digitalRead(tombol3)==LOW) {
if(tanggal>0) tanggal = tanggal - 1;
else tanggal=31;
}
rtc.adjust(DateTime(tahun,bulan,tanggal,jam,menit,detik));
}
else if(menu==4) {
lcd.setCursor(0,0); lcd.print(" SETTING BULAN ");
sprintf(tampil," TGL %02d: :%04d "tanggal,tahun);
lcd.setCursor(0,1); lcd.print(tampil); delay(200);
sprintf(tampil," TGL %02d:%02d:%04d ",tanggal,bulan,tahun);
lcd.setCursor(0,1); lcd.print(tampil); delay(200);
if(digitalRead(tombol2)==LOW) {
if(bulan<12) bulan = bulan + 1;
else bulan=0;
}
else if(digitalRead(tombol3)==LOW) {
if(bulan>0) bulan = bulan - 1;
else bulan=12;
}
rtc.adjust(DateTime(tahun,bulan,tanggal,jam,menit,detik));
}
else if(menu==5) {
lcd.setCursor(0,0); lcd.print(" SETTING TAHUN ");
sprintf(tampil," TGL %02d:%02d: "tanggal,bulan);
lcd.setCursor(0,1); lcd.print(tampil); delay(200);
sprintf(tampil," TGL %02d:%02d:%04d ",tanggal,bulan,tahun);
lcd.setCursor(0,1); lcd.print(tampil); delay(200);
if(digitalRead(tombol2)==LOW) {
tahun = tahun + 1;
}
else if(digitalRead(tombol3)==LOW) {
tahun = tahun - 1;
}
rtc.adjust(DateTime(tahun,bulan,tanggal,jam,menit,detik));
}
else menu=0;
}