歡樂頌

 const int buzzer = 8;


// 音符定義(C4 = 262Hz)

#define NOTE_0 0     // 休止符

#define NOTE_1 262   // C4

#define NOTE_2 294   // D4

#define NOTE_3 330   // E4

#define NOTE_4 349   // F4

#define NOTE_5 392   // G4

#define NOTE_6 440   // A4

#define NOTE_7 494   // B4


// 歡樂頌旋律(簡化版)

int melody[] = {

  NOTE_3, NOTE_3, NOTE_4, NOTE_5,

  NOTE_5, NOTE_4, NOTE_3, NOTE_2,

  NOTE_1, NOTE_1, NOTE_2, NOTE_3,

  NOTE_3, NOTE_2, NOTE_2, NOTE_0,


  NOTE_3, NOTE_3, NOTE_4, NOTE_5,

  NOTE_5, NOTE_4, NOTE_3, NOTE_2,

  NOTE_1, NOTE_1, NOTE_2, NOTE_3,

  NOTE_2, NOTE_1, NOTE_1, NOTE_0

};


int noteDurations[] = {

  4,4,4,4,

  4,4,4,4,

  4,4,4,4,

  4,4,4,4,


  4,4,4,4,

  4,4,4,4,

  4,4,4,4,

  4,4,4,4

};


void setup() {

  // 無需初始化

}


void loop() {

  for (int i = 0; i < sizeof(melody)/sizeof(int); i++) {

    int duration = 1000 / noteDurations[i];

    if (melody[i] != NOTE_0) {

      tone(buzzer, melody[i], duration);

    }

    delay(duration * 1.3); // 加入間隔

    noTone(buzzer);

  }

}


留言