资料下载
链接:https://pan.baidu.com/s/1OfaxDexNl3Lwj1GnbxnQnw?pwd=lx88
1.1 介绍:
本实验用无源蜂鸣器播放音乐,无源蜂鸣器是通过PWM脉冲宽度调制脉冲进而调节音调,
PWM比较多用于调节LED灯的亮度或者调节无源蜂鸣器的频率,或者是电机的转动速度,电机带动的车轮速度也就能很容易控制了,在玩一些Arduino机器人时,更能体现PWM的好处。
音乐除了要“唱的准”,还要“节奏对”,每一个音符的持续时间,就是节拍啦。我们可以用延时多少来设置节拍的,例如:1拍,1秒即1000毫秒;1/2拍,0.5秒即500毫秒;1/4拍,0.25秒即250毫秒;1/8拍,0.125秒即125毫秒….,我们可以试一试组合不同的音调和节拍,看看会有什么不同的效果。
1.2 模块相关资料:
1.3 实验组件:
1.4模块接线图:
1.5 实验代码:
/*
无源蜂鸣器模块
https://sourl.cn/Pr4UE8
*/
void setup(){
pinMode(3, OUTPUT); //设置3为输出
}
void loop(){
tone(3,392); //控制引脚3输出模拟值为262的脉冲
delay(125); //延迟125毫秒
tone(3,392);
delay(125);
tone(3,440);
delay(250);
tone(3,392);
delay(250);
tone(3,532);
delay(250);
tone(3,494);
delay(500);
tone(3,392);
delay(125);
tone(3,392);
delay(125);
tone(3,440);
delay(250);
tone(3,392);
delay(250);
tone(3,587);
delay(250);
tone(3,532);
delay(500);
tone(3,392);
delay(125);
tone(3,392);
delay(125);
tone(3,784);
delay(250);
tone(3,659);
delay(250);
tone(3,532);
delay(250);
tone(3,494);
delay(250);
tone(3,440);
delay(250);
tone(3,392);
delay(125);
tone(3,392);
delay(125);
tone(3,330);
delay(250);
tone(3,262);
delay(250);
tone(3,587);
delay(250);
tone(3,532);
delay(500);
}
1.6实验结果:
上传代码到开发板,就会听到无源蜂鸣器播放这首“生日快乐歌”了
1.7 代码说明:
在音乐中有两个重要的因素:音调和节拍
在音乐课上,老师教过我们唱“1(Do)、2(Re)、3(Mi)、4(Fa) 、5(Sol) 、6(La) 、7(Si)”是音乐当中的唱名,就对应了音调中的C、D、E、F、G、A、B这些音名。
1(Do) 2(Re) 3(Mi) 4(Fa) 5(Sol) 6(La) 7(Si)
C D E F G A B
比如
程序 tone(3,262)😉; 的意思是让引脚3输出模拟值为262的脉冲,即对应音调1(D0);同理2(Re)、3(Mi)、4(Fa) 、5(Sol) 、6(La) 、7(Si)的音调分别对应输出模拟值为294,330,349,196,440,494的脉冲。
频率(音调)高低判断时先看后面的数字,数字越大,音调越高,数字相同时看前面的字母,从C到B频率(音调)越来越高;而节拍是音符延时时间,数值越大,延时时间越长。这里我按照“生日快乐歌”来设计了音调和节拍,我们先来看它的简谱:
节拍是指每个音符持续的时间。音谱中不带线的一个音符就是一拍,延时1000毫秒,而带一条下划线的音符节拍是不带线音符节拍的1/2,带两条下划线的音符节拍是不带线音符节拍的1/4(动画:,根据对话圈出相应的音符和标注)。 例如:第一个音符下面有两条线,所以就是1/4拍,延时250毫秒。