Cara Mudah Program RTC DS3231 Jam Digital Dengan Arduino
Pengenalan RTC DS3231
Sebelumnya di Kelas Robot saya pernah Posting mengenai RTC DS1302, RTC yang murah dan simple buat yang belajar membuat Jam Digital. Tapi kekurangan dari RTC tersebut adalah keakuratan waktunya, banyak yang berpengalaman ternyata RTC ini sering error sekian menit waktunya dalam waktu bulanan.
Nah bahaya banget kan kalo kita bikin product yang permanent untuk jangka waktu yang lama, seperti Jam Digital dan Jadwal Shalat. Nah untuk itu saya kenalkan agan ke RTC DS3231.
Kelebihan RTC DS3231
- Sangat Akurat dan sudah saya pakai berbulanan-bulan, waktunya masih sama dengan real time waktu sekarang. Hampir tidak ada yang berubah sedikitpun.
- Memiliki Sensor Suhu di dalamnya. Bayangkan udah ada sensor suhunya bro.
- Memiliki EPPROM juga. Kurang canggih apalagi coba. hihihi
Harga? Lebih mahal dari DS1302, tapi kualitas jauh pastinya. Dan lebih kumplit, seperti yang saya sebutkan diatas.
Membuat Rangkaian RTC DS3231
Sebelum membuat Rangkaian, pastikan kamu sudah menyiapakan:
- Arduino dan Kabel USB
- RTC DS3231 udah isi Baterai
- Kabel Jumper
Selanjutnya silahkan rangkai seperti pada rangkaian dibawah ini
Arduino | RTC DS3231 |
5V | 5V |
GND | GND |
A4 | SDA |
A5 | SCL |
Add Library RTC DS3231 Ke Arduino IDE
Kita akan Menggunakan Library RTClib.h dari Adafruit, yang mana bisa di Download melalui link dibawah ini:
Jika sudah di Download, silakan tambahkan ke Arduino IDE, jika kamu tidak tahu cara menambahkannya, silakan buka Tutorial dibawah ini:
Bagaimana Cara Memasukan Library Ke Aplikasi Arduino IDE
Koding RTC DS3231
Untuk koding yang digunakan pada RTC DS3231, silakan gunakan dibawah ini:
#include "RTClib.h"
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Ahad", "Senin", "Selasa", "Rabu", "Kamis", "Jum'at", "Sabtu"};
int jam, menit, detik;
int tanggal, bulan, tahun;
String hari;
void setup () {
Serial.begin(9600);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
}
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
void loop () {
DateTime now = rtc.now();
jam = now.hour();
menit = now.minute();
detik = now.second();
tanggal = now.day();
bulan = now.month();
tahun = now.year();
hari = daysOfTheWeek[now.dayOfTheWeek()];
Serial.println(String() + hari + ", " + tanggal + "-" + bulan + "-" + tahun);
Serial.println(String() + jam + "-" + menit + "-" + tahun);
Serial.println();
delay(1000);
}
Agan tinggal Upload aja, kemudian cek di Serial Monitor. Nanti akan muncul data waktu seperti dibawah ini:
Catatan Penting WAJIB BACA
- koding ini rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); adalah koding untuk setting Waktu Otomatis sesuai dengan Komputer, kalo sudah upload sekali silakan kasih komentar //, lalu upload lagi kodingnya
- Jika ingin set Manual silakan gunakan koding ini rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); silakan hilangkan komentar, sesuaikan waktunya, kemudian upload. Jika sudah upload sekali, kasih lagi komentar terus upload lagi.
Oke Sekian Postingan kali ini. Jika dari teman-teman ada yang ingin dinyakan silahkan isi di kotak komentar ya. Terimakasih
bang klo mau ditampilin di lcd 16×2 codingnya gmana bang
Kak, library ini gak support di wemos d1 ya?
wah iya tu bang, caranya nampilin di lcd 16×2 gimana ya