3 Langkah - Tutorial Mencar Ilmu Arduino Rtc (Real Time Clock) Ds1307 Ds3231

 merupakan sebuah modul yang sering kali digunakan untuk memperlihatkan masukan atau nilai waktu 3 Langkah - Tutorial Belajar Arduino RTC (Real Time Clock) DS1307 DS3231

Apa itu RTC (Real Time Clock)?

RTC atau yang biasa disebut dengan "Real Time Clock" merupakan sebuah modul yang sering kali digunakan untuk memperlihatkan masukan atau nilai waktu secara aktual pada mikrokontroller/sejenisnya, modul ini mempunyai baterai koin yang digunkan untuk menjaga modul dalam keadaan ON meski mikrokontroller dimatikan.

RTC mempunyai keluaran nilai berupa : Tahun, Bulan, Tanggal, Hari, Jam, Menit, dan Detik yang sanggup dimanfaatkan untuk memetakan hasil suatu kegiatan yang dilakukan oleh mikrokontroller ke dalam waktu yang nyata. Berikut ini yakni langkah - langkah yang harus dilakukan :

1. Cara Merangkai Arduino dan Modul RTC DS1307 / DS3231

Sebelum menciptakan rangkaian, pastikan semua materi sudah ada dan dalam kondisi baik, sehingga memudahkan proses perakitan dan uji coba, perhatikan gambar di bawah ini.



Setelah semua komponen terhubung dengan baik dan benar langkah selanjutnya yakni menciptakan arahan kegiatan untuk menjalankan perintah semoga modul RTC sanggup diambil nilainya mulai dari Tahun, Bulan, Tanggal, Hari, Jam, Menit, dan Detik. Berikut ini yakni arahan programnya.

2. Kode Program Arduino dan Modul RTC (Real Time Clock) DS1307 / DS3231

#include "Wire.h"
#define DS3231_I2C_ADDRESS 0x68
//Konvesri nilai nomor desimal ke biner
byte decToBcd(byte val)
{
  return( (val/10*16) + (val%10) );
}
// Konversi Biner ke Desimal
byte bcdToDec(byte val)
{
  return( (val/16*10) + (val%16) );
}
void setup()
{
  Wire.begin();
  Serial.begin(9600);
  // Pengaturan waktu da di bawah ini
  // DS3231 Detik, menit, jam, hari, tanggal, bulan, tahun
  setDS3231time(30,42,16,5,13,10,19);
}
void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
dayOfMonth, byte month, byte year)
{
  // Pengaturan waktu dn tanggal modul RTC
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0); 
  Wire.write(decToBcd(second)); // pengaturan detik
  Wire.write(decToBcd(minute)); // pengaturan menit
  Wire.write(decToBcd(hour)); // pengaturan jam
  Wire.write(decToBcd(dayOfWeek)); // pengaturan hari dari (Minggu - Sabtu)
  Wire.write(decToBcd(dayOfMonth)); // Pengaturan tanggal dari (1-31)
  Wire.write(decToBcd(month)); // Pengaturan Bulan
  Wire.write(decToBcd(year)); // Pengaturan dari (0 - 99)
  Wire.endTransmission();
}
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0); 
  Wire.endTransmission();
  Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
  // Meminta 7 byte data dari modul RTC untuk memulai register 00h
  *second = bcdToDec(Wire.read() & 0x7f);
  *minute = bcdToDec(Wire.read());
  *hour = bcdToDec(Wire.read() & 0x3f);
  *dayOfWeek = bcdToDec(Wire.read());
  *dayOfMonth = bcdToDec(Wire.read());
  *month = bcdToDec(Wire.read());
  *year = bcdToDec(Wire.read());
}
void displayTime()
{
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  // Mengambil data dari modul RTC
  readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
  &year);
  // Mengirim hasil nilai ke Serial Monitor
  Serial.print(hour, DEC);
  // Mengkonversi variabel byte ke dalam nilai desimal
  Serial.print(":");
  if (minute<10)
  {
    Serial.print("0");
  }
  Serial.print(minute, DEC);
  Serial.print(":");
  if (second<10)
  {
    Serial.print("0");
  }
  Serial.print(second, DEC);
  Serial.print(" ");
  Serial.print(dayOfMonth, DEC);
  Serial.print("/");
  Serial.print(month, DEC);
  Serial.print("/");
  Serial.print(year, DEC);
  Serial.print(" Day of week: ");
  switch(dayOfWeek){
  case 1:
    Serial.println("Sunday");
    break;
  case 2:
    Serial.println("Monday");
    break;
  case 3:
    Serial.println("Tuesday");
    break;
  case 4:
    Serial.println("Wednesday");
    break;
  case 5:
    Serial.println("Thursday");
    break;
  case 6:
    Serial.println("Friday");
    break;
  case 7:
    Serial.println("Saturday");
    break;
  }
}
void loop()
{
  displayTime(); // Menampilkan data RTC pada Serial Monitor
  delay(1000); // Setiap Detik
}

3. Uji coba

Berikut ini yakni gambar hasil uji coba menampilkan nilai dari modul RTC ke dalam Serial Monitor.


apabila temen-temen mengalami kesulitan dikala melaksanakan perangkaian atau pembuatan arahan kegiatan modul RTC DS3231 / DS1307 dengan Arduino, eksklusif saja tulis di dalam kolom komentar atau menghubungi saya via Telegram di @mazatlumm

Terimakasih sudah membaca tutorial ini semoga bermanfaat, jangan lupa bagikan ke teman-teman kalian wacana apa yang sudah kalian sanggup dikala ini...

Comments

Popular posts from this blog

- Cara Mengendalikan Relay Memakai Esp32 + Blynk Wifi Connectify

Tutorial Sensor Pir Dan Esp8266 : Mengirim Notifikasi Ke Telegram Dikala Ada Gerakan

4 Langkah Gampang - Tutorial Menciptakan Sensor Hujan Arduino