Lompat ke konten Lompat ke sidebar Lompat ke footer

Cara Atur Jam RTC Arduino Menggunakan Serial Monitor

Set RTC melalui Serial Monitor Arduino

Cara Atur Jam RTC Arduino Menggunakan Serial Monitor - Pada artikel ini saya akan membagikan cara dan kode progam dimana kita dapat mengatur waktu pada RTC (Real Time Clock) melalui komunikasi Serial.

Cara ini sangat bermanfaat dan dapat digunakan dalam berbagai aplikasi, dimana kita harus mengatur waktu hanya dengan komunikasi Serial.

Cara Atur Jam RTC Arduino Menggunakan Serial Monitor


Bagaimana cara kerjanya?

Jadi, kita gunakan karakter atau kata tertentu, bilamana karakter itu kita masukkan, maka ia akan merubah jadwal tertentu. Maka dari itu saya set perintah berikut:

  • TG untuk merubah Tanggal
  • BL untuk merubah Bulan
  • TH untuk merubah Tahun
  • JM untuk merubah Jam
  • MT untuk merubah Menit
  • DT untuk merubah Detik

Rangkaian

Untuk rangkaiannya dan jenis RTC nya sebagai contoh kita gunakan DS3231. Adapun contoh program ini juga dapat digunakan untuk RTC DS1307.  Adapun rangakaiannya seperti berikut:
Cara Atur Jam RTC Arduino Menggunakan Serial Monitor

Untuk koneksi dari RTC DS3231 atau juga satu family dengannya DS1307 menggunakan komunikasi I2C. Maka pin yang digunakan hanya 4 yaitu VCC, GND, SDA dan SCL.

Untuk mengoperasikan RTC ini menggunakan Arduino, silahkan download library RTClib pada link berikut:

Download DS3231 Libary RTClib

Jika sudah, masukkan library Libary RTClib yang telah teman-teman download ke Arduino IDE dengan cara:
  • Buka Arduino IDE
  • Klik Sketch > Include Library > Add .ZIP Library
  • Cari Library RTClib-master.zip yang telah teman-teman download
  • Klik Ok
Selain itu, anda juga dapat menambahkan library yang tersedia pada library manager Arduino IDE dengan cara:
  • Klik menu Sketch > Include Library > Manage Libraries
  • Cari RTClib
  • Kemudian klik install.

Program

Untuk programnya adalah sebagai berikut:

#include "RTClib.h"

RTC_DS3231 rtc;

char daysOfTheWeek[7][7] = {"Ahad", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
char Month [13][10] = {" ", "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"};
String read_string = " ";
int read_int = 0;

void setup () {
  Serial.begin(9600);


  if (! rtc.begin()) {
    Serial.println("Tidak ada RTC");
    Serial.flush();
    abort();
  }
}

void loop () {
  bacaRTC();
  aturRTC();
  delay(1000);
}

void bacaRTC()
{
  DateTime now = rtc.now();

  Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); // Menampilkan Hari
  Serial.print(", ");
  Serial.print(now.day(), DEC);     // Menampilkan tanggga
  Serial.print(' ');
  Serial.print(Month[now.month()]); // Menampilkan bulan
  Serial.print(' ');
  Serial.print(now.year(), DEC);    // Menampilkan tahun
  Serial.print(", ");
  Serial.print(now.hour(), DEC);    // Menampilkan jam
  Serial.print(':');
  Serial.print(now.minute(), DEC);  // Menampilkan menit
  Serial.print(':');
  Serial.print(now.second(), DEC);  // Menampilkan detik
  Serial.println('\n');
}
void aturRTC() {
  DateTime now = rtc.now();

  while (Serial.available() > 0) {

    read_string = Serial.readStringUntil('\n');
    read_string.trim();
    delay(100);

    //Hari tidak dapt diubah karena akan berubah sendiri sesuai tanggal

    //Jika tanggal
    if (read_string == "TG") {
      Serial.print("Masukkan Tanggal: ");

      //Tahan sebentar menunggu data baru dikirim
      while (!Serial.available()) {}

      read_int = Serial.parseInt();
      Serial.println(read_int);

      rtc.adjust(DateTime(now.year(), now.month(), read_int, now.hour(), now.minute(), now.second()));
    }

    //Jika bulan
    if (read_string == "BL") {
      Serial.print("Masukkan Bulan: ");

      //Tahan sebentar menunggu data baru dikirim
      while (!Serial.available()) {}

      read_int = Serial.parseInt();
      Serial.println(read_int);

      rtc.adjust(DateTime(now.year(), read_int, now.day(), now.hour(), now.minute(), now.second()));
    }

    //Jika tahun
    if (read_string == "TH") {
      Serial.print("Masukkan Tahun: ");

      //Tahan sebentar menunggu data baru dikirim
      while (!Serial.available()) {}

      read_int = Serial.parseInt();
      Serial.println(read_int);

      rtc.adjust(DateTime(read_int, now.month(), now.day(), now.hour(), now.minute(), now.second()));
    }

    //Jika jam
    if (read_string == "JM") {
      Serial.print("Masukkan Jam: ");

      //Tahan sebentar menunggu data baru dikirim
      while (!Serial.available()) {}

      read_int = Serial.parseInt();
      Serial.println(read_int);

      rtc.adjust(DateTime(now.year(), now.month(), now.day(), read_int, now.minute(), now.second()));
    }

    //Jika menit
    if (read_string == "MT") {
      Serial.print("Masukkan Menit: ");

      //Tahan sebentar menunggu data baru dikirim
      while (!Serial.available()) {}

      read_int = Serial.parseInt();
      Serial.println(read_int);

      rtc.adjust(DateTime(now.year(), now.month(), now.day(), now.hour(), read_int, now.second()));
    }

    //Jika  detik
    if (read_string == "DT") {
      Serial.print("Masukkan Detik: ");

      //Tahan sebentar menunggu data baru dikirim
      while (!Serial.available()) {}

      read_int = Serial.parseInt();
      Serial.println(read_int);

      rtc.adjust(DateTime(now.year(), now.month(), now.day(), now.hour(), now.minute(), read_int));
    }
  }
}

Sekarang, silahkan upload program diatas, kemudian buka Serial Monitor. Lalu gunakan perintah berikut maka akan keluar perintah lainnya, masukkan nilai waktunya. Maka nilai RTC akan berubah.

Semoga artikel ini bermanfaat.


Posting Komentar untuk "Cara Atur Jam RTC Arduino Menggunakan Serial Monitor"