arduino+蜂鳴器製作生日快樂歌

1. 接線圖


圖片來自https://create.arduino.cc/projecthub/SURYATEJA/use-a-buzzer-module-piezo-speaker-using-arduino-uno-89df45

2. 找到do rui mi

在網上搜索一番,找到了,把它們存到數組裏,後面七個是升一個八度的do ri mi,如果需要更高或者更低的音的頻率,可以參考Arduino音樂代碼《卡農》這篇文章;

int doremi[] = {262, 294, 330, 370, 392, 440, 494,         523, 587, 659, 698, 784, 880, 988} ; 

3. 簡譜

然後找一張簡譜,把音調和節拍都存起來,比如 1 記成 1, 升1記成8,八分音符記成1,四分音符記成2,以此類推。。不太懂簡譜的同學可以參考這篇文章 https://bbs.huaweicloud.com/blogs/241123

4. 打完收工

int pinBuzzer = 9; //管腳D9連接到蜂鳴器模塊的信號腳
// do(哆)、re(來)、mi(咪)、fa(發)、sol(唆)、la(拉)、si(西)
int doremi[] = {262, 294, 330, 370, 392, 440, 494, 523,587,659,698,784,880,988} ; 

int i = 0;
// 歌曲的音調
int happybirthday[] = {5,5,6,5,8,7,5,5,6,5,9,8,5,5,12,10,1,7,6,11,11,10,8,9,8};
// 節拍
int meter[] = {1,1,2,2,2,4, 1,1,2,2,2,4, 1,1,2,2,2,2,2, 1,1,2,2,2,4};
int len = sizeof(happybirthday) / sizeof(int);

void setup() {
  Serial.begin(9600);
  Serial.print("len ");
    Serial.println(len);
  pinMode(pinBuzzer, OUTPUT); //設置pinBuzzer腳爲輸出狀態
}



void loop() {

  //用tone()函數發出頻率爲frequency的波形
  tone(pinBuzzer, doremi[happybirthday[i] - 1]);
  delay(meter[i] * 200); //等待1000毫秒
  noTone(pinBuzzer);//停止發聲
  
  if(i == len - 1) {
    i = 0;
  } else {
    i += 1;
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章