Arduino Uno, RTC DS1307, dan LCD I2C
| Pin Arduino Uno | Pin RTC DS1307 | Pin LCD I2C | Fungsi |
| GND | GND | GND | Ground (Tanah) |
| 5V | VCC | VCC | Power (Daya) |
| A4 (SDA) | SDA | SDA | Data I2C |
| A5 (SCL) | SCL | SCL | Clock I2C |
B. SKETCH YANG PERLU DIKETIK:
// Sertakan library yang dibutuhkan
#include <Wire.h>
#include <RTClib.h> // Library untuk Real Time Clock (RTC)
#include <LiquidCrystal_I2C.h> // Library untuk LCD I2C
// Inisialisasi RTC DS1307
RTC_DS1307 rtc;
// Inisialisasi LCD pada alamat 0x27 untuk layar 16x2.
// Alamat I2C umum untuk LCD adalah 0x27 atau 0x3F. Jika tidak jalan, coba ganti alamatnya.
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// Inisialisasi komunikasi I2C
Wire.begin();
// Inisialisasi LCD
lcd.init();
lcd.backlight();
lcd.clear();
// Periksa apakah modul RTC terhubung
if (! rtc.begin()) {
lcd.print("RTC tidak ditemukan");
while (1); // Hentikan program
}
// Untuk mengatur waktu awal, hapus tanda komentar pada baris di bawah ini
// dan unggah *hanya sekali*. Setelah itu, komentar kembali baris tersebut.
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Atur waktu ke waktu kompilasi PC
lcd.print("Jam Digital");
}
void loop() {
// Ambil waktu saat ini dari RTC
DateTime now = rtc.now();
// Posisikan kursor di baris kedua, kolom 0 (indeks dimulai dari 0)
lcd.setCursor(0, 1);
// Tampilkan waktu dalam format HH:MM:SS
// Jam
if (now.hour() < 10) lcd.print('0'); // Tambahkan '0' di depan jika jam < 10
lcd.print(now.hour());
lcd.print(':');
// Menit
if (now.minute() < 10) lcd.print('0'); // Tambahkan '0' di depan jika menit < 10
lcd.print(now.minute());
lcd.print(':');
// Detik
if (now.second() < 10) lcd.print('0'); // Tambahkan '0' di depan jika detik < 10
lcd.print(now.second());
// Tunda selama 1 detik (1000 milidetik) sebelum update berikutnya
delay(1000);
}