Arduino+蜂鳴器實現黑人擡棺的音樂

先上代碼

#define NOTE_F1 350
#define NOTE_F2 393
#define NOTE_F3 441
#define NOTE_F4 495
#define NOTE_F5 556
#define NOTE_F6 624
#define NOTE_F7 661
#define NOTE_0  0
#define NOTE_FL1 175
#define NOTE_FL2 196
#define NOTE_FL3 221
#define NOTE_FL4 234
#define NOTE_FL5 262
#define NOTE_FL6 294
#define NOTE_FL7 330

#define NOTE_FH1 700
#define NOTE_FH2 786
#define NOTE_FH3 882
#define NOTE_FH4 935
#define NOTE_FH5 1049
#define NOTE_FH6 1178
#define NOTE_FH7 1322
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
int tune[] = //簡譜頻率
{
  NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F6,NOTE_F6,NOTE_F6,NOTE_F6,
  NOTE_F5,NOTE_F5,NOTE_F5,NOTE_F5,NOTE_FH1,NOTE_FH1,NOTE_FH1,NOTE_FH1,
  NOTE_FH2,NOTE_FH2,NOTE_FH2,NOTE_FH2,NOTE_FH2,NOTE_FH2,NOTE_FH2,NOTE_FH2,
  NOTE_F5,NOTE_F4,NOTE_F3,NOTE_F1,NOTE_F2,NOTE_0,NOTE_F2,NOTE_F6,
  NOTE_F5,NOTE_0,NOTE_F4,NOTE_0,NOTE_F3,NOTE_0,NOTE_F3,NOTE_F3,NOTE_F5,NOTE_0,NOTE_F4,NOTE_F3,NOTE_F2,NOTE_0,NOTE_F2,NOTE_FH4,
  NOTE_FH3, NOTE_FH4, NOTE_FH3, NOTE_FH4, NOTE_F2, NOTE_0,NOTE_F2,NOTE_FH4, NOTE_FH3, NOTE_FH4, NOTE_FH3, NOTE_FH4, NOTE_F2, NOTE_0,NOTE_F2,NOTE_F6,
  NOTE_F5,NOTE_0,NOTE_F4,NOTE_0,NOTE_F3,NOTE_0,NOTE_F3,NOTE_F3,NOTE_F5,NOTE_0,NOTE_F4,NOTE_F3,NOTE_F2,NOTE_0,NOTE_F2,NOTE_FH4,
  NOTE_FH3, NOTE_FH4, NOTE_FH3, NOTE_FH4, NOTE_F2, NOTE_0,NOTE_F2,NOTE_FH4,NOTE_FH3, NOTE_FH4, NOTE_FH3, NOTE_FH4,
};
float durt[]=                   //根據簡譜列出各節拍
{
  0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5, 
  0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5, 
  0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5, 
  0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5, 
  0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5, 
  0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5, 
  0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5, 
  0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,
  0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5, 
  0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5, 
  0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5, 
  0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
};

int length;//這裏定義一個變量,後面用來表示共有多少個音符 
int tonepin=9;//蜂鳴器的pin  
void setup() {   
  pinMode(tonepin,OUTPUT);//設置蜂鳴器的pin爲輸出模式   
  length = sizeof(tune)/sizeof(tune[0]);//這裏用了一個sizeof函數,可以查出tone序列裏有多少個音符 
} 

void loop()
{ 
  for(int x=0;x<length;x++)
  {
    tone(tonepin,tune[x]);
    delay(500*durt[x]);   //這裏用來根據節拍調節延時,500這個指數可以自己調整,在該音樂中,我發現用500比較合適。
    noTone(tonepin);
  }

}

看過本站上播放葫蘆娃的,網上找的astronomia簡譜F調,自己弄的,這個是關於蜂鳴器和音樂超級詳細的解說,受這個啓發做出來的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章