#define BUZZER 8
// =======================
// FREKUENSI NADA
// =======================
#define NOTE_C4 262
#define NOTE_CS4 277
#define NOTE_D4 294
#define NOTE_DS4 311
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_GS4 415
#define NOTE_A4 440
#define NOTE_AS4 466
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_CS5 554
#define NOTE_D5 587
#define NOTE_DS5 622
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
#define NOTE_G5 784
#define NOTE_GS5 830
#define NOTE_A5 880
#define NOTE_AS5 932
#define NOTE_B5 988
// =======================
// MELODI TETRIS PANJANG
// =======================
int melody[] = {
NOTE_E5, NOTE_B4, NOTE_C5, NOTE_D5,
NOTE_C5, NOTE_B4, NOTE_A4, NOTE_A4,
NOTE_C5, NOTE_E5, NOTE_D5, NOTE_C5,
NOTE_B4, NOTE_C5, NOTE_D5, NOTE_E5,
NOTE_C5, NOTE_A4, NOTE_A4, 0,
NOTE_D5, NOTE_F5, NOTE_A5,
NOTE_G5, NOTE_F5, NOTE_E5, NOTE_C5,
NOTE_E5, NOTE_D5, NOTE_C5, NOTE_B4,
NOTE_B4, NOTE_C5, NOTE_D5, NOTE_E5,
NOTE_C5, NOTE_A4, NOTE_A4, 0,
NOTE_E4, NOTE_G4, NOTE_C5, NOTE_D5,
NOTE_E5, NOTE_C5, NOTE_B4, NOTE_A4,
NOTE_A4, NOTE_C5, NOTE_E5,
NOTE_D5, NOTE_C5, NOTE_B4, NOTE_C5,
NOTE_D5, NOTE_E5, NOTE_C5, NOTE_A4, NOTE_A4, 0
};
// Durasi per nada
int noteDurations[] = {
8,8,8,8,
8,8,8,8,
8,8,8,8,
8,8,8,8,
8,8,4,4,
8,8,8,
8,8,8,8,
8,8,8,8,
8,8,8,8,
8,8,4,4,
8,8,8,8,
8,8,8,8,
4,4,4,
8,8,8,8,
8,8,4,4,4,4
};
// =======================
// PLAY FUNCTION (LAMBAT)
// =======================
void playTone(int noteFreq, int duration) {
if (noteFreq == 0) {
delay(duration * 2.2); // jeda nada lebih panjang → tempo lambat
return;
}
tone(BUZZER, noteFreq, duration * 2.2);
delay(duration * 2.2 * 1.3); // jeda antar nada juga diperlambat
}
// =======================
void setup() {
pinMode(BUZZER, OUTPUT);
int notes = sizeof(melody) / sizeof(melody[0]);
for (int i = 0; i < notes; i++) {
int duration = 1000 / noteDurations[i];
playTone(melody[i], duration);
}
}
void loop() {}