//Membuat tanggal dan waktu otomatis menggunakan Modul DS1307 RTC terhubung I2C and Wire lib
#include "RTClib.h"
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
void setup () {
Serial.begin(57600);
#ifndef ESP8266
while (!Serial); // tunggu hingga port serial terhubung. Diperlukan untuk USB asli
#endif
if (! rtc.begin()) {
Serial.println("tidak dapat menemukan RTC");
Serial.flush();
abort();
}
if (! rtc.isrunning()) {
Serial.println("RTC tidak berjalan, silahkan untuk mengatura waktu!");
// Ketika waktu perlu diatur pada perangkat baru, atau setelah kehilangan daya,
// baris berikut menetapkan RTC ke tanggal & waktu sketsa ini dikompilasi
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// Baris ini menyetel RTC dengan tanggal & waktu eksplisit, misalnya untuk menyetel
// 21 Januari 2014 pukul 3 pagi Anda akan menelepon:
// rtc.menyesuaikan (DateTime(2014, 1, 21, 3, 0, 0));
}
// Ketika waktu perlu disetel ulang pada perangkat yang telah dikonfigurasi sebelumnya, waktu
// baris berikut menetapkan RTC ke tanggal & waktu sketsa ini dikompilasi
// rtc.sesuaikan (DateTime (F (__TANGGAL__), F (__WAKTU__)));
// Baris ini menyetel RTC dengan tanggal & waktu eksplisit, misalnya untuk menyetel
// 21 Januari 2014 pukul 3 pagi Anda akan menelepon:
// rtc.menyesuaikan (DateTime(2014, 1, 21, 3, 0, 0));
}
void loop () {
Serial.print("Tangggal dan Jam Sekarang");
Serial.print('\n');
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();
// hitung tanggal yaitu 7 hari, 12 jam, 30 menit, dan 6 detik ke depan
Serial.print('\n');
Serial.print("Prediksi Tanggal dan Jam di 7 hari kedepan: ");
DateTime future (now + TimeSpan(7,12,30,6));
Serial.print(future.year(), DEC);
Serial.print('/');
Serial.print(future.month(), DEC);
Serial.print('/');
Serial.print(future.day(), DEC);
Serial.print(' ');
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();
Serial.println();
delay(3000);
}