Cara Menggunakan RTC DS3231 pada Arduino + Penjelasan

Rangkaian RTC DS3231 pada Arduino

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


Post a Comment

0 Comments