#include "pitches.h" //載入音調和頻率的對照檔
#define buzzer 3
#define buttonPin 4
// 旋律
int melody[] = {
NOTE_C5, NOTE_DS5, NOTE_C5, NOTE_DS5, NOTE_C5, NOTE_AS4, NOTE_C5, NOTE_DS5, NOTE_C5, 0,
NOTE_F5, NOTE_DS5, NOTE_F5, NOTE_C5, NOTE_GS4, NOTE_C5, NOTE_AS4, NOTE_GS4, NOTE_F4, 0 ,
NOTE_F5, NOTE_G5, NOTE_F5, NOTE_DS5, NOTE_C5, NOTE_AS4, NOTE_C5, 0, NOTE_C5, NOTE_AS4, NOTE_C5, NOTE_AS4, NOTE_GS4, NOTE_G4, NOTE_F4, 0,
NOTE_C5, 0, NOTE_C5, 0,
NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_G4, 0, NOTE_F4, 0,
NOTE_GS4, 0, NOTE_GS4, 0, NOTE_G4, 0, NOTE_F4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_G4, 0, NOTE_F4, 0,
NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_DS5, 0, NOTE_C5, 0, NOTE_AS4, 0,
NOTE_AS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_C5, 0, NOTE_F4, 0, NOTE_F4, 0, NOTE_GS4, 0, NOTE_AS4, 0, NOTE_C5, 0, NOTE_F4, 0, NOTE_F4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_AS4, 0, NOTE_DS5, 0, NOTE_C5, 0,
NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_G4, 0, NOTE_G4, 0, NOTE_G4, 0, NOTE_G4, 0, NOTE_GS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_GS4, 0, NOTE_G4, 0, NOTE_F4, 0,
NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_GS4, 0, NOTE_G4, 0, NOTE_G4, 0, NOTE_G4, 0, NOTE_G4, 0, NOTE_G4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_C5, 0, NOTE_C5, 0,
NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_CS5, 0, NOTE_CS5, 0, NOTE_C5, 0, NOTE_C5, 0,
NOTE_DS5, 0, NOTE_F5, 0, NOTE_G5, 0, NOTE_F5, 0, NOTE_DS5, 0, NOTE_F5, 0,
NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_C5, 0,
NOTE_C5, 0, NOTE_C5, 0,
};
int noteDurations[] = {
36, 36, 36, 18, 36, 36, 36, 36, 9, 24,
24, 36, 36, 24, 36, 36, 36, 36, 9, 24,
24, 36, 36, 18, 36, 36, 24, 144, 36, 36, 36, 36, 36, 36, 24, 36,
36, 144, 13, 9,
72, 144, 72, 144, 36, 144, 36, 144, 24, 144, 36, 144, 72, 144, 36, 144, 72, 144, 72, 144, 72, 144, 36, 144, 36, 144, 24, 18,
36, 144, 36, 144, 36, 144, 24, 144, 72, 144, 36, 144, 36, 144, 72, 144, 72, 144, 72, 144, 36, 144, 36, 144, 24, 12,
36, 144, 36, 144, 36, 144, 24, 144, 72, 144, 72, 144, 36, 144, 36, 144, 72, 144, 36, 144, 36, 144, 36, 144, 18, 9,
36, 144, 36, 144, 36, 144, 24, 144, 36, 144, 36, 144, 24, 144, 24, 144, 24, 144, 36, 144, 36, 144, 36, 144, 36, 144, 24, 144, 24, 144, 24, 24,
72, 144, 36, 144, 72, 144, 36, 144, 36, 144, 72, 144, 36, 144, 72, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 24, 24,
72, 144, 36, 144, 72, 144, 36, 144, 36, 144, 72, 144, 36, 144, 72, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 24, 144, 24, 72,
36, 144, 72, 144, 36, 144, 36, 144, 72, 144, 36, 144, 72, 144, 36, 144, 36, 144, 36, 144, 18, 144, 36, 144, 36, 144, 24, 18,
36, 144, 36, 144, 36, 144, 36, 144, 24, 144, 24, 24,
24, 144, 24, 144, 36, 144, 18, 144, 36, 144, 36, 144, 24, 144, 24, 144, 36, 144, 18, 144, 36, 144, 36, 144, 24, 144, 24, 144, 36, 144, 18, 144, 36, 144, 72, 144, 72, 144, 24, 144, 24, 144, 36, 144, 18, 144,
36, 144, 36, 144,
};
void setup() {
pinMode(buttonPin, INPUT);
}
void loop() {
if (digitalRead(buttonPin) == LOW) {
// 按鈕按下
// 播放音階
for (int thisNote = 0; thisNote < 1250; thisNote++) {
// 計算每個音的長度
int noteDuration = 5760 / noteDurations[thisNote];
// 設定音調和拍子
tone(buzzer, melody[thisNote], noteDuration);
// 每個音之間要停一小段時間
int pauseBetweenNotes = noteDuration * 1.2;
delay(pauseBetweenNotes);
// 停止播放
noTone(buzzer);
}
}
}