#include "RTClib.h"
RTC_DS1307 rtc;
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
char buffer[20];
char Day[7][7]= {"Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"};
void lcdv()
{
lcd.init();
lcd.backlight();
lcd.clear();
}
void rtcv()
{
if(!rtc.begin())
{
lcd.home();
lcd.print("RTC Not OK, time set");
delay(1000);
abort();
}
if(!rtc.isrunning())
{
lcd.home();
lcd.print("RTC Not OK, time set");
delay(1000);
rtc.adjust(DateTime (F(__DATE__),F(__TIME__)));
}
}
void loop()
{
DateTime waktu=rtc.now();
lcd_display(waktu);
serial_display(waktu);
delay(1000);
}
void lcd_display(DateTime waktu)
{
lcd.setCursor(0,0);
lcd.print(Day[waktu.dayOfTheWeek()]);
lcd.setCursor(0,1);
lcd.print(waktu.hour());
lcd.setCursor(2,1);
lcd.print(":");
lcd.setCursor(3,1);
lcd.print(waktu.minute());
lcd.setCursor(5,1);
lcd.print(":");
lcd.setCursor(6,1);
lcd.print(waktu.second());
sprintf (buffer, "%s %02d/%02d/%4d",Day[waktu.dayOfTheWeek()],waktu.day(),waktu.month(),waktu.year() );
lcd.setCursor(0,2);
lcd.print(buffer);
sprintf (buffer, "%02d:%02d:%02d",waktu.hour(),waktu.minute(),waktu.second() );
lcd.setCursor(0,3);
lcd.print(buffer);
}
void serial_display(DateTime waktu)
{
sprintf (buffer, "%s %02d/%02d/%4d",Day[waktu.dayOfTheWeek()],waktu.day(),waktu.month(),waktu.year() );
Serial.print(buffer);
sprintf (buffer, " %02d:%02d:%02d",waktu.hour(),waktu.minute(),waktu.second() );
Serial.println(buffer);
}
void setup()
{
Serial.begin(9800);
lcdv();
rtcv();
}