#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <RTClib.h> // Pustaka untuk RTC DS3231
RTC_DS1307 rtc; // Objek RTC DS3231
const int Ledpin = 2;
const int Ledpin1 = 3;
const int Buttonpin = 4;
const int Buzzerpin = 8;
LiquidCrystal_I2C lcd(0x27,20,4);
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(Ledpin, OUTPUT);
pinMode(Ledpin1, OUTPUT);
pinMode(Buttonpin, INPUT_PULLUP);
pinMode(Buzzerpin, OUTPUT);
// Inisialisasi RTC DS3231
if (!rtc.begin()) {
Serial.println("Modul RTC tidak ditemukan!");
while (1);
}
}
void loop() {
DateTime now = rtc.now(); // Baca waktu dari RTC
// Menampilkan waktu pada LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Waktu:");
lcd.setCursor(0, 1);
lcd.print(now.hour());
lcd.print(":");
if (now.minute() < 10) {
lcd.print("0"); // Menambahkan nol di depan menit jika kurang dari 10
}
lcd.print(now.minute());
lcd.print(":");
if (now.second() < 10) {
lcd.print("0"); // Menambahkan nol di depan detik jika kurang dari 10
}
lcd.print(now.second());
int tombol = digitalRead(Buttonpin);
if(tombol == LOW){
digitalWrite(Ledpin, HIGH);
int melody[]={266,388,298};
int durasi = 200;
for (int i = 0; i < 3; i++) {
tone(Buzzerpin, melody[i]);
delay(durasi);
noTone(Buzzerpin);
}
}
// Memeriksa apakah waktu sekarang adalah 08:00
if (now.hour() == 8 && now.minute() == 0) {
digitalWrite(Ledpin, HIGH); // Menyalakan LED
}
// Memeriksa apakah waktu sekarang adalah 12:00
if (now.hour() == 12 && now.minute() == 0) {
// Memainkan nada
int melody[] = {266, 388, 298};
int durasi = 200;
for (int i = 0; i < 3; i++) {
tone(Buzzerpin, melody[i]);
delay(durasi);
noTone(Buzzerpin);
}
}
delay(1000);
digitalWrite(Ledpin1, HIGH);
delay(1000);
digitalWrite(Ledpin1, LOW);
digitalWrite(Ledpin, LOW);
}