#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "RTClib.h"
LiquidCrystal_I2C lcd(0x27, 20, 4);
RTC_DS3231 rtc;
void scanI2C() {
Serial.println("Scanning I2C devices...");
for (byte addr = 1; addr < 127; addr++) {
Wire.beginTransmission(addr);
if (Wire.endTransmission() == 0) {
Serial.print("Found device at 0x");
if (addr < 16) Serial.print("0");
Serial.println(addr, HEX);
}
}
}
void print2dLCD(int val) { if (val < 10) lcd.print("0"); lcd.print(val); }
void print2dSerial(int val) { if (val < 10) Serial.print("0"); Serial.print(val); }
void setup() {
Wire.begin();
Serial.begin(9600);
scanI2C();
lcd.init();
lcd.backlight();
if (!rtc.begin()) {
Serial.println("RTC not found!");
while (1); }
if (rtc.lostPower()) rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void loop() {
DateTime now = rtc.now(); lcd.setCursor(0, 0);
print2dLCD(now.day()); lcd.print("/");
print2dLCD(now.month()); lcd.print("/");
lcd.print(now.year()); lcd.setCursor(0, 1);
print2dLCD(now.hour()); lcd.print(":");
print2dLCD(now.minute()); lcd.print(":");
print2dLCD(now.second()); Serial.print("Tanggal: ");
print2dSerial(now.day()); Serial.print("/");
print2dSerial(now.month()); Serial.print("/");
Serial.print(now.year()); Serial.print(" Waktu: ");
print2dSerial(now.hour()); Serial.print(":");
print2dSerial(now.minute()); Serial.print(":");
print2dSerial(now.second()); Serial.println();
delay(1000);
}