#include <LiquidCrystal_I2C.h> //mengontrol modul LCD karakter melalui koneksi I2C
#include <RTClib.h> //fungsi untuk berinteraksi
#include <Wire.h> //komunikasi antarperangkat I2C
#define SERIAL_OPTION 0 //mendefinisikan sebuah konstanta dengan nama SERIAL_OPTION dan nilai 0.
LiquidCrystal_I2C lcd(0x27,16,2); //Inisialisasi layar LCD dengan 16 kolom dan 2 baris
RTC_DS1307 RTC; //sebuah chip yang menyediakan fungsi jam waktu nyata (RTC)
void setup() //Inisialisasi kode di sini
{
if (SERIAL_OPTION) Serial.begin(9600); //mengaktifkan komunikasi serial pada kecepatan 9600 bps
lcd.init (); // perintah untuk mengaktifkan LCD
lcd.backlight(); //Menyalakan lampu latar layar LCD
RTC.begin(); //untuk memulai atau menginisialisasi modul RTC (Real Time Clock).
}
void loop() // kode utama disini
{
DateTime now=RTC.now(); //untuk mendapatkan waktu saat ini dari modul RTC
if (SERIAL_OPTION)
{
// Tampilan serial monitor
Serial.print(now.day()); Serial.print("/"); //untuk menampilkan hari sekarang
Serial.print(now.month()); Serial.print("/"); // untuk menampilkan bulan sekarang
Serial.print(now.year()); Serial.print(" "); // untuk menampilkan tahun sekarang
Serial.print(now.hour()); Serial.print(":"); //untuk menampilkan jam sekarang
Serial.print(now.minute()); Serial.print(":"); //untuk menampilkan menit sekarang
Serial.print(now.second()); Serial.print("\n"); //untuk menampilkan detik sekarang
}
// Tampilan LCD
lcd.setCursor(0,0); lcd.print("TGL: "); // Menampilkan teks "TGL: "
lcd.print(now.day()); lcd.print("/"); lcd.print(now.month()); lcd.print("/"); lcd.print(now.year()); //Menampilkan tanggal dalam format "hari/bulan/tahun"
lcd.setCursor(0,1); lcd.print("JAM: "); // Menampilkan teks "JAM: "
lcd.print(now.hour()); lcd.print(":"); lcd.print(now.minute()); lcd.print(":"); lcd.print(now.second()); //Menampilkan jam dalam format "jam/menit/detik"
delay(1000); //Menunda selama 1 detik/milidetik (ms).
}