#include "pitches.h"
// Definisikan nada untuk lagu "Naik Naik ke Puncak Gunung"
int melody[] = {
NOTE_G4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_D4, NOTE_E4, NOTE_E4, NOTE_E4, NOTE_C4, // Naik naik ke puncak gunung
NOTE_F4, NOTE_E4, NOTE_D4, NOTE_B3, NOTE_C4, NOTE_D4, NOTE_C4, // Tinggi tinggi sekali
NOTE_G4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_E4, NOTE_G4, NOTE_G4, NOTE_E4, NOTE_C4, // Naik naik ke puncak gunung
NOTE_E4, NOTE_D4, NOTE_B3, NOTE_B3, NOTE_C4, NOTE_D4, NOTE_C4 // Tinggi tinggi sekali...
};
// Durasi dari setiap nada
int noteDurations[] = {
500, 500, 500, 500, 500, 500, 500, 500, 500, // Naik naik ke puncak gunung
500, 500, 500, 500, 500, 500, // Tinggi tinggi sekali
500, 500, 500, 500, 500, 500, 500, 500, 500, // Naik naik ke puncak gunung
500, 500, 500, 500, 500, 500 // Tinggi tinggi sekali...
};
// Bagian kedua dari lagu
int melody2[] = {
NOTE_G4, NOTE_A4, NOTE_A4, NOTE_F4, NOTE_A4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_E4, // Kiri kanan kulihat saja
NOTE_G4, NOTE_G4, NOTE_F4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_E4, NOTE_F4, NOTE_G4, // Banyak pohon cemara a... a...
NOTE_G4, NOTE_A4, NOTE_A4, NOTE_F4, NOTE_A4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_E4, // Kiri kanan kulihat saja
NOTE_G4, NOTE_G4, NOTE_F4, NOTE_D4, NOTE_E4, NOTE_D4, NOTE_C4 // Banyak pohon cemara
};
// Durasi untuk bagian kedua
int noteDurations2[] = {
500, 500, 500, 500, 500, 500, 500, 500, 500, // Kiri kanan kulihat saja
500, 500, 500, 500, 500, 500, 500, 500, 500, // Banyak pohon cemara a... a...
500, 500, 500, 500, 500, 500, 500, 500, 500, // Kiri kanan kulihat saja
500, 500, 500, 500, 500, 500 // Banyak pohon cemara
};
const int buzzerPin = 13; // Pin untuk buzzer
const int buttonPin = 12; // Pin untuk tombol
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Menggunakan pull-up resistor
}
void loop() {
// Mengecek apakah tombol ditekan
if (digitalRead(buttonPin) == LOW) {
playMelody(melody, noteDurations, 32); // Mainkan bagian pertama
delay(1000); // Delay untuk menghindari pengulangan cepat
playMelody(melody2, noteDurations2, 32); // Mainkan bagian kedua
delay(1000); // Delay untuk menghindari pengulangan cepat
}
}
void playMelody(int melody[], int noteDurations[], int length) {
// Memainkan setiap nada
for (int thisNote = 0; thisNote < length; thisNote++) {
int noteDuration = noteDurations[thisNote];
tone(buzzerPin, melody[thisNote], noteDuration);
// Durasi jeda antara nada
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// Hentikan nada
noTone(buzzerPin);
}
}