Rangkaian RTC DS3231 pada Arduino
Koding RTC DS3231 pada Arduino
1. Pengaturan pertama untuk RTC DS3231
Jika pertama kali menggunakan RTC, maka harus diatur dahulu untuk waktu yang sekarang. sehingga kedepannya tidak usah diatur lagi, tinggal digunakan
#include "RTClib.h" RTC_DS3231 rtc; char daysOfTheWeek[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"}; void setup () { Serial.begin(57600); #ifndef ESP8266 while (!Serial); // wait for serial port to connect. Needed for native USB #endif if (! rtc.begin()) { Serial.println("Couldn't find RTC"); Serial.flush(); abort(); } if (rtc.lostPower()) { Serial.println("RTC lost power, let's set the time!"); } // set waktu untuk tanggal 14 Oktober 2021 Pukul 23:25:00 rtc.adjust(DateTime(2021, 10, 14, 23, 25, 0)); } void loop () { }
Pada source code di atas terdapat fungsi rtc.adjust(); digunakan untuk mengatur waktu yang akan menjadi acuan nantinya. Sedangkan fungsi DateTime(); digunakan untuk mengubah nilai int menjadi format waktu.
2. Menggunakan Data Waktu dari RTC DS3231
Tahap selanjutnya yaitu mengambil datanya, yaitu waktu.
#include "RTClib.h" RTC_DS3231 rtc; char daysOfTheWeek[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"}; void setup () { Serial.begin(57600); #ifndef ESP8266 while (!Serial); // wait for serial port to connect. Needed for native USB #endif if (! rtc.begin()) { Serial.println("Couldn't find RTC"); Serial.flush(); abort(); } if (rtc.lostPower()) { Serial.println("RTC lost power, let's set the time!"); } } void loop () { DateTime now = rtc.now(); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" ("); Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); Serial.print(" since midnight 1/1/1970 = "); Serial.print(now.unixtime()); Serial.print("s = "); Serial.print(now.unixtime() / 86400L); Serial.println("d"); // menambah 7 hari, 12 jam, 30 menit, 6 detik kedepan DateTime kedepan (now + TimeSpan(7,12,30,6)); Serial.print(" now + 7d + 12h + 30m + 6s: "); Serial.print(kedepan.year(), DEC); Serial.print('/'); Serial.print(kedepan.month(), DEC); Serial.print('/'); Serial.print(kedepan.day(), DEC); Serial.print(' '); Serial.print(kedepan.hour(), DEC); Serial.print(':'); Serial.print(kedepan.minute(), DEC); Serial.print(':'); Serial.print(kedepan.second(), DEC); Serial.println(); Serial.print("Temperature: "); Serial.print(rtc.getTemperature()); Serial.println(" C"); Serial.println(); delay(3000); }
rtc.now(); digunakan untuk mendapatkan nilai waktu sekarang. Nilai tersebut ditampung pada variabel now. Jika kita menginginkan waktu pada satuan tertentu maka dapat menggunakan fungsi,
.year() => tahun
.month() => bulan
.day() => tanggal
.dayOfTheWeek => hari dalam angka, sesuai urutan dimulai dari minggu
.hour() => jam
.minute() => menit
.second() => detik
Kemudian, jika kita ingin menambahkan waktu sekarang dengan banyak waktu tertentu. Jika di source code diatas maka menambahkan sebesar 7 hari, 12 jam, 30 menit dan 6 detik dari waktu sekarang. Hal tersebut dapat dilakukan dengan menggunakan fungsi TimeSpan(); dengan urutan parameternya yaitu (hari, jam, menit, detik);
Terima Kasih
https://linktr.ee/robotikid
Youtube: https://www.youtube.com/robotikid
Instagram: https://www.instagram.com/robotikid/
Facebook: https://www.facebook.com/RobotikID/
Website: https://www.robotikindonesia.com/
Tokopedia: http://tokopedia.com/instrumentrobot
0 Comments