#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 RTC;
int buzzer=11;
void setup() {
lcd.init();
lcd.backlight();
RTC.begin();
pinMode(buzzer,OUTPUT);
digitalWrite(buzzer,LOW);
lcd.setCursor(4,0);
lcd.print("Project");
lcd.setCursor(2,1);
lcd.print("Jam Digital");
delay(1000);
lcd.clear();
}
void loop() {
DateTime baca_rtc=RTC.now();
lcd.setCursor(0,0);
lcd.print("DATE: ");
lcd.print(baca_rtc.year());
lcd.print("/");
lcd.print(baca_rtc.month());
lcd.print("/");
lcd.print(baca_rtc.day());
lcd.setCursor(0,1);
lcd.print("TIME: ");
lcd.print(baca_rtc.hour());
lcd.print("/");
lcd.print(baca_rtc.minute());
lcd.print("/");
lcd.print(baca_rtc.second());
/*di buat kan variable untuk menentukan jam berapa
akan menyala buzzer*/
int alarm_jam=10;
int alarm_menit=53;
/*program while akan menahan program yang ada di atas nya ( lebih bagus memakai void fungsi agar waktu lcd tidak ketahan )
karena program lcd terdapat di atas nya while jadi waktu ikut tertahan)
tetap berjalan sesuai parameter yang di tentukan.
cara baca parameter,menggunakan parameter rtc waktu karena rt. berjalan terus waktunya)
*/
if(baca_rtc.hour() == alarm_jam && baca_rtc.minute() == alarm_menit){
tone(buzzer,1000);
delay(10000); //10detik
while(baca_rtc.hour() == alarm_jam && baca_rtc.minute() == alarm_menit) {
noTone(buzzer);
}
}
else noTone(buzzer);
/*u/ membedakan buzzer aktif dan passive yaitu dengan langsung kasih power
buzzer opassive = tidak langsung menyala. jadi harus pakai program tone.
bizzer aktif = langsung menyala , jadi pakai digitalWrite*/
}