#define BUZZER_PIN 15
#define SWITCH_PIN 4
bool isPlaying = false;
// 音階
#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
int melody[] = {
NOTE_C4, NOTE_C4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, NOTE_G4,
NOTE_F4, NOTE_F4, NOTE_E4, NOTE_E4, NOTE_D4, NOTE_D4, NOTE_C4
};
int noteDurations[] = {
400, 400, 400, 400, 400, 400, 800,
400, 400, 400, 400, 400, 400, 800
};
int notes = sizeof(melody) / sizeof(melody[0]);
void playMelody() {
isPlaying = true;
for (int i = 0; i < notes; i++) {
tone(BUZZER_PIN, melody[i]); // 周波数指定
delay(noteDurations[i]); // 再生時間
noTone(BUZZER_PIN); // 停止
delay(50); // 音の間
}
isPlaying = false;
}
void setup() {
pinMode(SWITCH_PIN, INPUT_PULLUP);
pinMode(BUZZER_PIN, OUTPUT);
}
void loop() {
if (digitalRead(SWITCH_PIN) == LOW) {
if (!isPlaying) {
playMelody();
}
// チャタリング&押しっぱなし対策
delay(20);
while (digitalRead(SWITCH_PIN) == LOW) {
delay(10);
}
}
}