Membuat Jam Digital Arduino Menggunakan RTC DS3231 dan LCD

Proyek jam digital berbasis Arduino menjadi salah satu proyek edukasi yang banyak diminati. Selain berguna untuk menampilkan waktu secara real-time, proyek ini juga mengajarkan bagaimana mengintegrasikan modul waktu nyata (RTC) dan tampilan LCD ke dalam satu sistem. Dalam proyek ini kita akan menggunakan RTC DS3231 dan LCD 16×2 dengan modul I2C.

Modul RTC DS3231 memiliki akurasi tinggi dan tetap menyimpan data waktu meskipun Arduino dimatikan, karena dilengkapi baterai backup. Sedangkan LCD I2C dipilih agar hemat pin, cukup menggunakan dua kabel untuk komunikasi data (SDA dan SCL). Proyek ini cocok untuk display ruangan, jam dinding digital, atau sistem pengatur waktu otomatis.

Program menggunakan library RTClib dari Adafruit dan LiquidCrystal_I2C, sehingga instalasi mudah dan coding menjadi ringkas. Waktu akan ditampilkan dalam format tanggal, hari, dan jam secara terus menerus di LCD.

Komponen yang Digunakan
  • 1x Arduino Uno / Nano
  • 1x Modul RTC DS3231
  • 1x LCD 16×2 + I2C backpack
  • Kabel jumper secukupnya
  • Breadboard (opsional)
Skema Rangkaian
Koneksi Rangkaian
KomponenArduino
VCC RTC5V
GND RTCGND
SDA RTCA4
SCL RTCA5
VCC LCD I2C5V
GND LCD I2CGND
SDA LCD I2CA4
SCL LCD I2CA5

📝 Catatan: Koneksi ini berlaku untuk Arduino Uno & Nano. Untuk Mega, pin SDA = 20 dan SCL = 21.

Library yang Harus ditambahkan

Catatan: Semua library bisa juga diinstal melalui Arduino IDE lewat Sketch → Include Library → Manage Libraries…

Kode Program Lengkap
//PROGRAM INI DI BUAT OLEH  : MANFAHBOT INDUSTRIAL AUTOMATION
//HAK CIPTA PROGRAM/CODING : LUKMAN HAKIM A.
//WEBSITE : http://manfahbot.cc

#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>

RTC_DS3231 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C bisa juga 0x3F

char namaHari[7][12] = {"Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"};

void setup() {
Wire.begin();
lcd.begin();
lcd.backlight();

rtc.begin();
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}

lcd.setCursor(0, 0);
lcd.print(" JAM DIGITAL ");
delay(1500);
lcd.setCursor(0, 1);
lcd.print(" LABELEKTRONIKA ");
delay(1500);
lcd.clear();
}

void loop() {
DateTime now = rtc.now();

lcd.setCursor(0, 0);
lcd.print(namaHari[now.dayOfTheWeek()]);
lcd.print(", ");
printAngka(now.day());
lcd.print("-");
printAngka(now.month());
lcd.print("-");
lcd.print(now.year());

lcd.setCursor(3, 1);
printAngka(now.hour());
lcd.print(":");
printAngka(now.minute());
lcd.print(":");
printAngka(now.second());

delay(1000);
}

void printAngka(int digits) {
if (digits < 10) {
lcd.print("0");
}
lcd.print(digits);
}
Penjelasan Singkat Program
  • Menggunakan LiquidCrystal_I2C untuk komunikasi dua kabel antara Arduino dan LCD.
  • RTC DS3231 dikontrol menggunakan RTClib.
  • Fungsi printAngka() digunakan untuk menambahkan nol di depan angka < 10.
  • Tanggal ditampilkan dalam format Hari, dd-mm-yyyy.
  • Jam ditampilkan dalam format hh:mm:ss di baris kedua.

Kesimpulan

Proyek jam digital ini sangat ideal untuk belajar mikrokontroler dan tampilan waktu. Dengan penggunaan RTC DS3231 dan LCD I2C, sistem menjadi lebih efisien, rapi, dan hemat pin. Proyek ini dapat dikembangkan menjadi jam alarm otomatis, pengontrol relay berdasarkan waktu, atau bahkan jam berbasis IoT.

manfah.industri@gmail.com
manfah.industri@gmail.com
Articles: 26

Leave a Reply

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *