#include "RTClib.h"
RTC_DS1307 RTC;
const int pinBuzzer = 8;
const int hariUlangTahun = 28; // Ganti ke hari ulang tahun yang diinginkan
const int bulanUlangTahun = 5; // Ganti ke bulan ulang tahun yang diinginkan
int durasiNadaUlangTahun = 15; // Default durasi nada dalam detik
void setup() {
Serial.begin(9600);
pinMode(pinBuzzer, OUTPUT);
RTC.begin();
if (!RTC.isrunning()) {
Serial.println("RTC tidak berjalan");
} else {
Serial.println("RTC berjalan");
}
Serial.println("Masukkan durasi nada dalam detik: ");
}
void loop() {
// Mengecek input serial untuk durasi nada
if (Serial.available() > 0) {
int input = Serial.parseInt();
if (input > 0) {
durasiNadaUlangTahun = input;
Serial.print("Durasi nada diatur ke: ");
Serial.print(durasiNadaUlangTahun);
Serial.println(" detik");
}
}
DateTime sekarang = RTC.now();
Serial.print("Tanggal & Waktu: ");
Serial.print(sekarang.day(), DEC);
Serial.print("/");
Serial.print(sekarang.month(), DEC);
Serial.print("/");
Serial.print(sekarang.year(), DEC);
Serial.print(" ");
Serial.print(sekarang.hour(), DEC);
Serial.print(":");
Serial.print(sekarang.minute(), DEC);
Serial.print(":");
Serial.print(sekarang.second(), DEC);
Serial.println();
if (sekarang.day() == hariUlangTahun && sekarang.month() == bulanUlangTahun) {
mainkanLaguUlangTahun();
}
delay(1000);
}
void mainkanNada(int frekuensi, int durasi) {
tone(pinBuzzer, frekuensi, durasi);
delay(durasi);
noTone(pinBuzzer);
delay(50); // Jeda antar nada
}
void mainkanLaguUlangTahun() {
int melodi[] = {
264, 264, 297, 264, 352, 330, 264, 264, 297, 264, 396, 352,
264, 264, 528, 440, 352, 330, 297, 466, 466, 440, 352, 396, 352
};
int durasiNada[] = {
250, 250, 500, 500, 500, 1000, 250, 250, 500, 500, 500, 1000,
250, 250, 500, 500, 500, 500, 1000, 250, 250, 500, 500, 500, 1000
};
unsigned long startTime = millis();
for (int i = 0; i < sizeof(melodi) / sizeof(int); i++) {
if ((millis() - startTime) >= durasiNadaUlangTahun * 2000) {
break;
}
mainkanNada(melodi[i], durasiNada[i]);
}
}