// Memanggil library RTClib
#include <RTClib.h>
// Constructor RTC_DS3231
RTC_DS3231 rtc;
// Variabel dengan tipe data char yang menampung data Hari
char dataHari[7][7] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
// Variabel dengan tipe data char yang menampung data Bulan
char dataBulan[12][10] = {"Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"};
// Variabel dengan tipe data integer
int tanggal, tahun, jam, menit, detik;
// Variabel dengan tipe data String
String hari, bulan, waktu;
// Fungsi ini hanya dijalankan sekali saat ESP32 dinyalakan
void setup() {
// Inisialisasi komunikasi serial (baudrate: 9600)
Serial.begin(9600);
// Memanggil fungsi RTCinit
RTCinit();
}
// Fungsi ini dijalankan secara terus menerus saat ESP32 dinyalakan
void loop() {
// Memanggil fungsi DateTime_Now() untuk:
// mengambil data waktu sekarang
DateTime_Now();
// Cetak di Serial Monitor: Waktu saat ini --> Data Waktu
Serial.println("Waktu saat ini --> " + waktu);
// Tunda 5 detik
delay(5000);
}
// Fungsi yang berisi inisialisasi RTC
void RTCinit() {
// Mengecek apakah RTC berhasil diinisialisasi
if (!rtc.begin()) {
// Cetak di Serial Monitor: RTC tidak terdeteksi!
Serial.println("RTC tidak terdeteksi!");
// Program akan looping ini terus sampai perangkat di-reset
while (1);
}
// Pengaturan DateTime ini diatur sekali
// Aturan pengisian :
// YYYY, MM, DD, HH, MM, SS --> Tahun, Bulan, Hari, Jam, Menit, Detik
// Jika sudah di kalibrasi, silakan rtc.adjust ditutup dengan cara di comment
rtc.adjust(DateTime(2026, 05, 12, 23, 02, 30));
}
// Fungsi yang mengelola data waktu saat ini
void DateTime_Now() {
// Membuat objek baru: now
DateTime now = rtc.now();
// Hari
hari = dataHari[now.dayOfTheWeek()];
// DD-MM-YYYY
tanggal = now.day(); bulan = dataBulan[now.month() - 1]; tahun = now.year();
// hh:mm:ss
jam = now.hour(); menit = now.minute(); detik = now.second();
// Waktu secara lengkap
waktu = String() + hari + ", " + (tanggal < 10 ? "0" : "") + tanggal +
" " + bulan + " " + tahun + ", Pukul = " + (jam < 10 ? "0" : "") + jam +
":" + (menit < 10 ? "0" : "") + menit + ":" + (detik < 10 ? "0" : "") + detik;
}