#include <Wire.h> // Library untuk komunikasi I2C
#include <SPI.h> // Tidak digunakan di sini, tapi diperlukan untuk mencegah error kompilasi pada RTClib
#include "RTClib.h"
#include <LiquidCrystal_I2C.h> // Library untuk LCD
// Inisialisasi LCD dengan alamat I2C 0x27 dan ukuran 20x4
LiquidCrystal_I2C lcd(0x27, 20, 4);
RTC_DS1307 rtc; // Membuat instance RTC_DS1307
// Fungsi untuk menampilkan teks rata tengah pada LCD
void printCenter(int row, String text) {
int spaces = (20 - text.length()) / 2; // Sesuaikan dengan lebar LCD 20 karakter
lcd.setCursor(spaces, row);
lcd.print(text);
}
void setup () {
Serial.begin(57600); // Mengatur kecepatan komunikasi serial
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Menyalakan backlight LCD
Wire.begin(); // Memulai I2C
rtc.begin(); // Memulai RTC
// Mengatur waktu RTC jika belum disetel
if (!rtc.isrunning()) {
rtc.adjust(DateTime(__DATE__, __TIME__));
Serial.println("RTC disetel ke waktu kompilasi");
}
// Tampilkan pesan awal
lcd.setCursor(0, 0);
lcd.print("Real Time Clock");
delay(3000);
lcd.clear();
}
void loop () {
DateTime now = rtc.now(); // Mendapatkan waktu saat ini dari RTC
// Tampilkan baris pertama dengan teks "UMASEHAT.COM" (rata tengah)
printCenter(0, "POLMED");
// Tampilkan hari di baris kedua (rata tengah)
String daysOfTheWeek[7] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis",
"Jumat", "Sabtu"};
String dayText = "Hari: " + daysOfTheWeek[now.dayOfTheWeek()];
printCenter(1, dayText);
// Tampilkan jam di baris ketiga (rata tengah)
String hour = now.hour() < 10 ? "0" + String(now.hour()) :
String(now.hour());
String minute = now.minute() < 10 ? "0" + String(now.minute()) :
String(now.minute());
String second = now.second() < 10 ? "0" + String(now.second()) :
String(now.second());
String timeText = "Jam: " + hour + ":" + minute + ":" + second;
printCenter(2, timeText);
// Tampilkan tanggal di baris keempat (rata tengah)
String day = now.day() < 10 ? "0" + String(now.day()) :
String(now.day());
String month = now.month() < 10 ? "0" + String(now.month()) :
String(now.month());
String dateText = "Tanggal: " + day + "/" + month + "/" +
String(now.year());
printCenter(3, dateText);
delay(1000); // Update setiap 1 detik
}