1. 接線圖
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;
}
}