Membuat jam digital dengan Arduino menjadi sangat mudah menggunakan modul RTC DS3231 dan layar OLED 0.96 inch. RTC (Real Time Clock) menjaga waktu tetap akurat bahkan saat Arduino dimatikan karena memiliki baterai cadangan.
Proyek ini cocok untuk:
- Jam digital
- Kalender elektronik
Alat dan Bahan
- 1x Arduino Uno
- 1x OLED Display 0.96 inch (I2C)
- 1x Modul RTC DS3231
- Kabel jumper
Instalasi Library
Instal dua library utama:
- RTClib
- Adafruit SSD1306 dan Adafruit GFX Library (untuk OLED)
Langkah install library:
1. Buka Arduino IDE → Tools > Manage Libraries...2. Cari dan install:
- RTClib
- Adafruit SSD1306
- Adafruit GFX Library
Wiring Rangkaian
OLED dan RTC DS3231 sama-sama menggunakan komunikasi I2C, sehingga pin dapat di-share:OLED:
- VCC → 5V Arduino
- GND → GND
- SDA → A4 (Arduino Uno)
- SCL → A5
- VCC → 5V Arduino
- GND → GND
- SDA → A4
- SCL → A5
Kode Program Menampilkan Jam & Tanggal
#include "Wire.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#include "RTClib.h"
#define SCREEN_WIDTH 128 // lebar layar
#define SCREEN_HEIGHT 64 // tinggi layar
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
RTC_DS3231 rtc;
void setup() {
Serial.begin(9600);
// Inisialisasi RTC
if (! rtc.begin()) {
Serial.println("Tidak bisa menemukan RTC");
while (1);
}
// Cek jika RTC perlu diatur ulang
if (rtc.lostPower()) {
Serial.println("RTC kehilangan daya, atur ulang waktu!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("OLED tidak ditemukan!");
while(1);
}
}
void loop() {
DateTime now = rtc.now();
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
char buffer[20];
sprintf(buffer, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
display.println("Jam :");
display.println(buffer);
display.setTextSize(1);
display.setCursor(0, 35);
sprintf(buffer, "%02d/%02d/%04d", now.day(), now.month(), now.year());
display.println("Tanggal :");
display.println(buffer);
display.display();
delay(1000);
}
Penjelasan Kode
- rtc.now() mengambil waktu saat ini dari RTC
- Format waktu dan tanggal ditampilkan menggunakan fungsi sprintf
- OLED diperbarui setiap detik
Tampilan hasil :
Selamat mencoba!
EmoticonEmoticon
Note: Only a member of this blog may post a comment.