#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
// Definisikan tombol untuk mengubah tampilan dari jam ke temp & humid
const int BUTTON_PIN = 6;
// Inisialisasi modul rtc
RTC_DS1307 rtc;
// Inisialiasi LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Membuat variabel hari
char daysOfTheWeek[7][12] = {"Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"};
void setup ()
{
// Memulai serial untuk debugging
Serial.begin(9600);
Serial.println("Real Time Clock and Temperature Sensor Test");
// pin tombol dengan input pullup atau tombol kembali posisi semula setelah ditekan (HIGH)
pinMode(BUTTON_PIN, INPUT_PULLUP);
// memulai lcd
lcd.begin (16,2);
lcd.backlight(); //menyalakan lampu backlight
// memeriksa RTC tersambung
if (! rtc.begin())
{
lcd.print("Tidak menemukan RTC");
while (1);
}
// memeriksa apakah RTC berfungsi
if (! rtc.isrunning())
{
lcd.print("RTC tidak berfungsi!");
}
}
// variabel untuk megatur status tombol
int lastState = HIGH;
void loop ()
{
DateTime now = rtc.now(); // mengambil waktu dari perangkat
// menampilkan data ke serial monitor
Serial.print("DATE: ");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(" ");
Serial.print(now.day());
Serial.print('/');
Serial.print(now.month());
Serial.print('/');
Serial.print(now.year());
Serial.print(" ");
Serial.print("TIME");
Serial.print(" ");
Serial.print(now.hour());
Serial.print(':');
Serial.print(now.minute());
Serial.print(':');
Serial.println(now.second());
// menampilkan data ke lcd
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("TIME");
lcd.print(" ");
lcd.print(now.hour());
lcd.print(':');
lcd.print(now.minute());
lcd.print(':');
lcd.print(now.second());
lcd.print(" ");
lcd.setCursor(0, 0);
lcd.print("DATE");
lcd.print(" ");
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
lcd.print(" ");
lcd.print(now.day());
lcd.print('/');
lcd.print(now.month());
lcd.print('/');
lcd.print(now.year());
lcd.print(" ");
//mengatur tombol untuk mengubah tampilan ke temperatur dan humid
int value = digitalRead((BUTTON_PIN));
if (lastState != value) {
lastState = value;
if (value == LOW) {
// tambahkan kode untuk menampilkan suhu di sini jika Anda menggunakannya
delay(2000); //Delay 1 detik.
}
}
delay(1000); // delay agar loop atau iterasi berjalan sesuai waktu detik
}