Menampilkan pembacaan waktu dan tanggal pada serial monitor
1. RTC DS3231 dihubungkan ke Arduino, koneksi pin dapat dilihat pada tabel di bawah ini:
Tabel 1. koneksi antara DS3231 dengan Arduino

2. Supaya lebih jelas, koneksi RTC DS3231 dengan Arduino Uno dapat dilihat pada gambar di bawah ini:

Gambar 1. Arduino Uno interface dengan DS3231
3. Download library RTC DS3231, melalui link di bawah ini.
4. Masukkan library tersebut dengan cara: klik sketch > include library > add .ZIP library…, lalu pilih file .ZIP yang sudah didownload.
5. Buat file baru di IDE Arduino, lalu ketikkan sintaks di bawah ini:
//Blog: pauzan.com //Youtube: Muhammad Pauzan //ini adalah koding untuk cek waktu saat ini di RTC DS3231, ditampilkan pada serial monitor // Koneksi ke Arduino Uno: // ---------------------- // DS3231: SDA pin ke A4 atau pada pin SDA // SCL pin ke A5 atau pada pin SCL #include <DS3231.h> // menginisiasi DS3231 DS3231 rtc(SDA, SCL); void setup() { // Koneksi serial pada rate 115200 Serial.begin(115200); // jika pakai arduino leonardo, hilangkan komen while di bawah ini // menginisiasi objek RTC rtc.begin(); } void loop() { // mengirimkan hari ke serial monitor Serial.print(rtc.getDOWStr()); Serial.print(" "); // mengirim tanggal ke serial monitor Serial.print(rtc.getDateStr()); Serial.print(" -- "); // mengirim waktu ke serial monitor Serial.println(rtc.getTimeStr()); // tunggu 1 detik sebelum perulangan delay (1000); }
6. Upload ke board Arduino
7. Klik sebelah kanan atas pada serial monitor, maka akan muncul tanggal dan waktu seperti pada gambar di bawah ini:

Gambar 2. Menampilkan waktu dan tanggal di serial monitor
Mengatur waktu pada RTC DS3231
Terkadang waktu yang terbaca pada DS3231 tidak sama dengan waktu yang kita inginkan, untuk mengatasi hal tersebut lakukan langkah-langkah berikut ini:
1. Koneksi DS3231 dengan Arduino seperti pada gambar 1 di atas.
2. Ingat library RTC DS3231 sudah dimasukkan ke IDE Arduino
3. Masukkan juga library RTClib, silahkan download pada link berikut ini:
dan masukkan juga library I2C LCD, silahkan download di postingan saya disini.
4. Buat file baru di IDE Arduino dan ketikkan kode berikut ini:
//Blog: pauzan.com //Youtube: Muhammad Pauzan #include <DS3231.h> /* * koneksi * SDA ke A4 * SCL ke A5 */ #include "RTClib.h" #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); //0x27 adalah alamat i2c di LCD #include <Wire.h> RTC_DS3231 rtc; char daysOfTheWeek[7][4] = {"Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"}; int Day; int Month; int Year; int Secs; int Minutes; int Hours; String dofweek; // hari String myDate; String myTime; void setup () { Serial.begin(9600); lcd.begin(); delay(2000); // delay 2 detik if (! rtc.begin()) { Serial.println("tidak menemukan RTC"); while (1); } if (rtc.lostPower()) { Serial.println("daya RTC hilang, set waktu"); // Comment out below lines once you set the date and time. //Following line sets the RTC to the date and time this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Following line sets the RTC with an explicit date and time // for example to set January 27 2017 at 12:56 you would call: // rtc.adjust(DateTime(2017, 1, 27, 12, 56, 0)); } } void loop () { DateTime now = rtc.now(); lcd.clear(); Day = now.day(); Month = now.month(); Year = now.year(); Secs = now.second(); Hours = now.hour(); Minutes = now.minute(); dofweek = daysOfTheWeek[now.dayOfTheWeek()]; myDate = myDate +dofweek+ ", "+ Day + "/" + Month + "/" + Year ; myTime = myTime + Hours +":"+ Minutes +":" + Secs ; // send to serial monitor Serial.println(dofweek); Serial.println(myDate); Serial.println(myTime); //Print on lcd lcd.setCursor(0,0); lcd.print(myDate); lcd.setCursor(0,1); lcd.print("Jam: "+myTime); myDate = ""; myTime = ""; delay(1000); }
5. Pada line ke-50 adalah kode untuk mengatur waktu, waktu disesuaikan dengan waktu yang ada di computer. Berikut kodenya:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //kode untuk set waktu, waktu sama dengan waktu di komputer
6. Upload ke board Arduino, lihat hasilnya pada serial monitor.
7. Jika waktu sudah sesuai, disable kode pada line 50 seperti di bawah ini:
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //kode untuk set waktu, waktu sama dengan waktu di komputer
8. Upload ulang, selesai.
Interface RTC DS3231 dengan I2C LCD dan Arduino
Selanjutnya kita tampilkan waktu hari bulan dan tahun dari DS3231 ke LCD, langkah-langkahnya sebagai berikut:
1. Buat rangkaian seprti pada tabel di bawah ini:
Tabel 2. Koneksi antara DS3231, Arduino Uno dan I2C LCD

Supaya lebih jelas, dapat dilihat rangkaian di bawah ini:

Gambar 3. Koneksi DS3231 dengan Arduino dan I2C LCD
2. Buka file baru pada IDE Arduino, jangan lupa masukkan dahulu library I2C LCD, caranya dapat dilihat pada postingan saya ini.
3. Ketikkan kode program di bawah ini:
//Blog: pauzan.com //Youtube: Muhammad Pauzan #include <DS3231.h> /* * koneksi * SDA ke A4 * SCL ke A5 */ #include "RTClib.h" #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); //0x27 adalah alamat i2c di LCD #include <Wire.h> RTC_DS3231 rtc; char daysOfTheWeek[7][4] = {"Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"}; int Day; int Month; int Year; int Secs; int Minutes; int Hours; String dofweek; // hari String myDate; String myTime; void setup () { Serial.begin(9600); lcd.begin(); lcd.setCursor(2,0); lcd.print("WELCOME TO"); lcd.setCursor(2,1); lcd.print("pauzan.com"); delay(2000); // delay 2 detik lcd.clear(); if (! rtc.begin()) { Serial.println("tidak menemukan RTC"); while (1); } if (rtc.lostPower()) { Serial.println("daya RTC hilang, set waktu"); // Comment out below lines once you set the date and time. // Following line sets the RTC to the date &amp;amp;amp;amp;amp;amp;amp; time this sketch was compiled //rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Following line sets the RTC with an explicit date and time // for example to set January 27 2017 at 12:56 you would call: // rtc.adjust(DateTime(2017, 1, 27, 12, 56, 0)); } } void loop () { DateTime now = rtc.now(); lcd.clear(); Day = now.day(); Month = now.month(); Year = now.year(); Secs = now.second(); Hours = now.hour(); Minutes = now.minute(); dofweek = daysOfTheWeek[now.dayOfTheWeek()]; myDate = myDate +dofweek+ ", "+ Day + "/" + Month + "/" + Year ; myTime = myTime + Hours +":"+ Minutes +":" + Secs ; // send to serial monitor Serial.println(dofweek); Serial.println(myDate); Serial.println(myTime); //Print on lcd lcd.setCursor(0,0); lcd.print(myDate); lcd.setCursor(0,1); lcd.print("Jam: "+myTime); myDate = ""; myTime = ""; delay(1000); }
4. Upload ke Arduino, tampilannya seperti pada gambar 4 di bawah ini:

Gambar 4. Waktu ditampilkan pada layar LCD