arduino+蜂鸣器制作生日快乐歌
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;
}
}
cnblogs-md-editor编辑器,用Markdown写博客就用它