int pilih, detik;
int year, month, day, hour, minute, second;
bool salah=1;
#include <RTClib.h>
RTC_DS1307 rtc;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
rtc.begin();
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));//pembaruan otomatis dari waktu komputer
// rtc.adjust(DateTime(year, month, day, hour, minute, second));// untuk mengatur waktu secara manual
Serial.println("Sistem Ready !");
menu();
}
void loop() {
// put your main code here, to run repeatedly:
DateTime now = rtc.now();
Serial.println(
"Date Now : " +
now.timestamp(DateTime::TIMESTAMP_DATE) +
" And Time : " +
now.timestamp(DateTime::TIMESTAMP_TIME)
);
if(Serial.available()){
pilih = Serial.parseInt();
if (pilih==9) menu();
}
Serial.println(detik);
detik++;
delay(1000);
}
void menu () {
DateTime now = rtc.now();
Serial.println("Menu:");
Serial.println("1. Setting Date");
Serial.println("2. Setting Time");
Serial.println("3. Tampil, tekan 9 jika ingin kembali ke menu");
do{
if(Serial.available()){
pilih = Serial.parseInt();
if (pilih==1){
Serial.println("Set Date (1-31): ");
while (Serial.available() == 0);
day = Serial.parseInt();
Serial.println("Set Month (1-12): ");
while (Serial.available() == 0);
month = Serial.parseInt();
Serial.println("Set Year (4 digit): ");
while (Serial.available() == 0);
year = Serial.parseInt();
rtc.adjust(DateTime(year, month, day, hour, minute, second));
salah=0;
Serial.println("Date is Uptodate!");
break;
}
else if (pilih==2){
Serial.println("Set Hour (0-23): ");
while (Serial.available() == 0);
hour = Serial.parseInt();
Serial.println("Set Minute (0-59): ");
while (Serial.available() == 0);
minute = Serial.parseInt();
Serial.println("Set Second (0-59): ");
while (Serial.available() == 0);
second = Serial.parseInt();
rtc.adjust(DateTime(year, month, day, hour, minute, second));
salah=0;
Serial.println("Time is Uptodate!");
break;
}
else if (pilih==3){
loop();
salah=0;
}
else {
Serial.println("Pilihan tidak ada");
salah=1;
}
}
}while(salah==1);
}