Board logo

標題: 蜂鳴器播音樂 [打印本頁]

作者: tonyh    時間: 2022-1-28 17:10     標題: 蜂鳴器播音樂

本帖最後由 tonyh 於 2022-1-28 17:31 編輯

Play a Melody using the tone() function

蜂鳴器基本上分兩類:有源蜂鳴器 (自激式)、無源蜂鳴器 (他激式)。

外觀上,有源蜂鳴器的兩支針腳一長一短,正極較長負極較短;而無源蜂鳴器的兩支針腳一樣長。

有源蜂鳴器是內建了一組固定的頻率,只要接通電源,就會發出固定的音調。 無源蜂源器則不同,我們必須透過程式,告訴它頻率,我們才能得到所需的音調,但我們就可以利用它來播放簡單的旋律。

[attach]12761[/attach]

  1. int buzzer=8;
  2. //             C   D   E   F   G   A   B   
  3. //音階頻率      Do  Re  Mi  Fa  So  La  Si
  4. //int freq[]={262,294,330,349,392,440,494};
  5. int freq[]={523,587,659,698,784,880,988};
  6. //int freq[]={1046,1175,1318,1397,1568,1760,1976};

  7. //歌曲音調(小蜜蜂)
  8. int melody[]={5,3,3,4,2,2,1,2,3,4,5,5,5,5,3,3,4,2,2,1,3,5,5,3,2,2,2,2,2,3,4,3,3,3,3,3,4,5,5,3,3,4,2,2,1,3,5,5,1};

  9. //節拍(小蜜蜂)
  10. int beat[]={1,1,2,1,1,2,1,1,1,1,1,1,2,1,1,2,1,1,2,1,1,1,1,4,1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,2,1,1,2,1,1,1,1,4};

  11. void setup(){
  12.   pinMode(buzzer,OUTPUT);
  13. }

  14. void loop(){
  15.   for(int i=0; i<49; i++){
  16.     tone(buzzer, freq[melody[i]-1]);
  17.     delay(beat[i]*320);
  18.     noTone(buzzer);
  19.   }
  20.   delay(1000);
  21. }
複製代碼

作者: 尤爾呈    時間: 2022-2-8 19:47

本帖最後由 尤爾呈 於 2022-2-8 20:10 編輯

int buzzer=8;
//             C   D   E   F   G   A   B   
//音階頻率      Do  Re  Mi  Fa  So  La  Si
//int freq[]={262,294,330,349,392,440,494};
int freq[]={523,587,659,698,784,880,988};
//int freq[]={1046,1175,1318,1397,1568,1760,1976};

//歌曲音調(佩佩豬)
int melody[]={1,2,3,1, 1,2,3,1, 3,4,5, 3,4,5, 5,6,5,4,3,1,5,6,5,4,3,1, 1,5,1, 1,5};

//節拍(佩佩豬)
int beat[]={2,2,2,2,2,2,2,2,2,2,4,2,2,4,1,1,1,1,2,2,1,1,1,1,2,2,2,2,4,2,2,4};

void setup(){
  pinMode(buzzer,OUTPUT);
}

void loop(){
  for(int i=0; i<49; i++){
    tone(buzzer, freq[melody-1]);
    delay(beat*320);
    noTone(buzzer);
  }
  delay(1000);
}




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2