#define buzzer 4
#define buttonPin 2 // Tombol terhubung ke pin 2
#include "pitch.h"
// Definisi frekuensi untuk nada (dalam Hertz)
// #define NOTE_B3 247
// #define NOTE_C4 261
// #define NOTE_D4 294
// #define NOTE_E4 329
// #define NOTE_F4 349
// #define NOTE_G4 392
// #define NOTE_A4 440
// #define NOTE_B4 493
// #define NOTE_C5 523
// Melodi lagu "Erika" (bagian sederhana)
// Melodi lagu "Jidanofu - Drink A Yak" (versi sederhana)
int melody[] = {
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_G4, NOTE_E4, NOTE_B3, NOTE_A3, NOTE_B3, // Bagian 1
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_G4, NOTE_E4, NOTE_D4, NOTE_C4, NOTE_B3, // Bagian 2
NOTE_C4, NOTE_D4, NOTE_E4, NOTE_G4, NOTE_F4, NOTE_E4, NOTE_D4, NOTE_C4, // Bagian 3
NOTE_B3, NOTE_C4, NOTE_A3, NOTE_B3, NOTE_E4, NOTE_G4, NOTE_A4, NOTE_G4, // Bagian 4
NOTE_E4, NOTE_B3, NOTE_A3, NOTE_G3, NOTE_A3, NOTE_B3, NOTE_C4, NOTE_D4, // Bagian 5
NOTE_E4, NOTE_D4, NOTE_C4, NOTE_B3, NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4, // Bagian 6
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_A4, NOTE_G4, NOTE_F4, NOTE_E4 // Bagian 7
};
// Durasi nada (1 = seperempat, 2 = setengah, dst.)
int noteDurations[] = {
4, 4, 4, 4, 4, 4, 4, 4, // Bagian 1
4, 4, 4, 4, 4, 4, 4, 4, // Bagian 2
4, 4, 4, 4, 4, 4, 4, 4, // Bagian 3
4, 4, 4, 4, 4, 4, 4, 4, // Bagian 4
4, 4, 4, 4, 4, 4, 4, 4, // Bagian 5
4, 4, 4, 4, 4, 4, 4, 4, // Bagian 6
4, 4, 4, 4, 4, 4, 4, 4 // Bagian 7
};
void setup() {
Serial.begin(115200);
pinMode(buzzer, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Konfigurasi tombol sebagai input dengan pull-up internal
}
void playSong() {
// Memainkan setiap nada dalam melodi
int melodyLength = sizeof(melody) / sizeof(melody[0]);
for (int thisNote = 0; thisNote < melodyLength; thisNote++) {
int noteDuration = 1000 / noteDurations[thisNote];
tone(buzzer, melody[thisNote], noteDuration);
// Jeda antara nada
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// Hentikan nada saat jeda
noTone(buzzer);
}
}
void loop() {
// Cek jika tombol ditekan
if (digitalRead(buttonPin) == LOW) { // LOW artinya tombol ditekan
playSong(); // Memainkan lagu saat tombol ditekan
delay(1000); // Jeda untuk menghindari pembacaan ganda
}
}