#include "pitches.h" //載入音調和頻率的對照檔
#define buzzer 3
#define buttonPin 4
// 旋律
int melody[] = {
NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_DS5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_C6, 0, NOTE_F5, 0, NOTE_F5, 0,
NOTE_C6, 0, NOTE_AS5, 0 ,NOTE_AS5, 0, NOTE_AS5, 0, NOTE_AS5, 0, NOTE_GS5, 0, NOTE_F5, 0, NOTE_C5, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_GS4, 0, NOTE_C5, 0, NOTE_GS4, 0, NOTE_F4, 0,
NOTE_F4, 0, NOTE_GS4, 0, NOTE_C5, 0,
NOTE_AS4, 0, NOTE_GS4, 0, NOTE_AS4, 0, NOTE_GS4, 0, NOTE_F4, 0,
NOTE_F4, 0, NOTE_GS4, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_GS4, 0, NOTE_C5, 0, NOTE_GS4, 0, NOTE_F4, 0,
NOTE_F4, 0, NOTE_GS4, 0, NOTE_C5, 0,
NOTE_AS4, 0, NOTE_GS4, 0, NOTE_AS4, 0, NOTE_GS4, 0, NOTE_F4, 0,
NOTE_F4, 0, NOTE_GS4, 0, NOTE_C5, 0, NOTE_C5, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_AS4, 0,
NOTE_DS5, 0, NOTE_DS5, 0, NOTE_F5, 0, NOTE_F5, 0,
NOTE_DS5, 0, NOTE_DS5, 0, NOTE_F5, 0, NOTE_F5, 0,
NOTE_DS5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_GS5, 0,
NOTE_DS5, 0, NOTE_DS5, 0, NOTE_F5, 0, NOTE_F5, 0,
NOTE_DS5, 0, NOTE_DS5, 0, NOTE_F5, 0, NOTE_F5, 0,
NOTE_DS5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_GS5, 0,
NOTE_DS5, 0, NOTE_DS5, 0, NOTE_F5, 0, NOTE_F5, 0,
NOTE_DS5, 0, NOTE_DS5, 0, NOTE_F5, 0, NOTE_F5, 0,
NOTE_DS5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_F5, 0, NOTE_GS5, 0,
NOTE_DS5, 0, NOTE_DS5, 0, NOTE_F5, 0, NOTE_F5, 0,
NOTE_DS5, 0, NOTE_DS5, 0, NOTE_F5, 0, NOTE_F5, 0,
NOTE_F5, 0,
NOTE_C5, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_AS4, 0, NOTE_GS4, 0, NOTE_C5, 0, NOTE_GS4, 0, NOTE_F4, 0
};
int noteDurations[] = {
18, 144, 18, 144, 18, 144, 18, 144, 36, 144, 36, 144, 18, 144, 18, 144, 36, 144, 36, 144,
36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 18, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 24, 24,
36, 144, 36, 144, 24, 9,
36, 144, 36, 144, 36, 144, 36, 144, 24, 24,
36, 144, 36, 144, 24, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 24, 24,
36, 144, 36, 144, 24, 9,
36, 144, 36, 144, 36, 144, 36, 144, 24, 24,
36, 144, 36, 144, 18, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 72,
72, 144, 36, 144, 36, 144, 36, 72,
72, 144, 36, 144, 36, 144, 36, 72,
36, 144, 36, 144, 72, 144, 36, 144, 72, 144, 36, 144, 36, 144, 36, 72,
72, 144, 36, 144, 36, 144, 36, 72,
72, 144, 36, 144, 36, 144, 36, 72,
36, 144, 36, 144, 72, 144, 36, 144, 72, 144, 36, 144, 36, 144, 36, 72,
72, 144, 36, 144, 36, 144, 36, 72,
72, 144, 36, 144, 36, 144, 36, 72,
36, 144, 36, 144, 72, 144, 36, 144, 72, 144, 36, 144, 36, 144, 36, 72,
72, 144, 36, 144, 36, 144, 36, 72,
72, 144, 36, 144, 36, 144, 36, 36,
36, 36,
36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 36, 144, 24, 1,
};
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);
}
}
}