Modul RTC (Real-Time Clock) DS1302 memungkinkan perangkat Arduino Uno untuk melacak waktu, bahkan saat perangkat mati atau terputus dari daya. Ini sangat bermanfaat untuk aplikasi seperti jam digital, pengingat berbasis waktu, atau pencatat data.
Artikel ini akan menunjukkan langkah-langkah memprogram RTC DS1302 pada Arduino Uno. Kita juga akan membaca waktu yang ditampilkan secara real-time di Serial Monitor.
Alat dan Bahan
- Arduino Uno
- Modul RTC DS1302
- Kabel jumper
- Breadboard
- Kabel USB untuk menghubungkan Arduino ke komputer
Skema Koneksi
Berikut adalah koneksi modul DS1302 dengan Arduino Uno:
- VCC → 5V Arduino
- GND → GND Arduino
- SCLK → Pin 6 Arduino
- IO → Pin 7 Arduino
- RST → Pin 8 Arduino

Kode Program
Berikut adalah kode program untuk membaca waktu dari modul RTC DS1302. Program ini menggunakan library DS3232RTC untuk mempermudah pengaturan dan pembacaan waktu.
Kode Lengkap
#include <Arduino.h>
#include <Wire.h>
#define addr_kompas 0x0D
int x_kompas, y_kompas, z_kompas;
void deklarasi_kompas() {
Wire.begin();
Wire.beginTransmission(addr_kompas);
Wire.write(0x0B);
Wire.write(0x01);
Wire.endTransmission();
Wire.beginTransmission(addr_kompas);
Wire.write(0x09);
Wire.write(0x1D);
Wire.endTransmission();
}
String baca_kompas() {
float heading = atan2(y_kompas, x_kompas);
if (heading < 0)
heading += 2 * PI;
if (heading > 2 * PI)
heading -= 2 * PI;
float headingDegrees = heading * 180 / M_PI;
if (headingDegrees < 22.5 || headingDegrees > 337.5) {
return "Utara";
} else if (headingDegrees < 67.5) {
return "Timur Utara";
} else if (headingDegrees < 112.5) {
return "Timur";
} else if (headingDegrees < 157.5) {
return "Timur Laut";
} else if (headingDegrees < 202.5) {
return "Selatan";
} else if (headingDegrees < 247.5) {
return "Barat Laut";
} else if (headingDegrees < 292.5) {
return "Barat";
} else if (headingDegrees < 337.5) {
return "Barat Daya";
}
}
void setup()
{
Serial.begin(9600);
deklarasi_kompas();
}
void loop(){
Wire.beginTransmission(addr_kompas);
Wire.write(0x00);
Wire.endTransmission();
Wire.requestFrom(addr_kompas, 6);
if (6 <= Wire.available()) {
x_kompas = Wire.read();
x_kompas |= Wire.read() << 8;
z_kompas = Wire.read();
z_kompas |= Wire.read() << 8;
y_kompas = Wire.read();
y_kompas |= Wire.read() << 8;
}
String arah = baca_kompas();
Serial.print("Arah kompas: ");
Serial.println(arah);
delay(500);
}
Selamat Mencoba!!
Semoga Berhasil!!
Bagi teman-teman berminat jasa seputar arduino/pengembangan web bisa hubungi kami di kontak whatsapp dibawah ini atau bisa cek tiktok kami disini : @labrobotika

