项目四 无源蜂鸣器播放音乐

项目四 无源蜂鸣器播放音乐#

1.项目介绍

本实验用无源蜂鸣器播放音乐,无源蜂鸣器是通过PWM脉冲宽度调制脉冲进而调节音调,PWM比较多用于调节LED灯的亮度或者调节无源蜂鸣器的频率,或者是电机的转动速度,电机带动的车轮速度也就能很容易控制了,在玩一些Arduino机器人时,更能体现PWM的好处。

音乐除了要“唱的准”,还要“节奏对”,每一个音符的持续时间,就是节拍啦。我们可以用延时多少来设置节拍的,例如:1拍,1秒即1000毫秒;1/2拍,0.5秒即500毫秒;1/4拍,0.25秒即250毫秒;1/8拍,0.125秒即125毫秒….,我们可以试一试组合不同的音调和节拍,看看会有什么不同的效果。

2.模块相关资料

  • 工作电压:3.3-5V(DC)

  • 电流:50MA

  • 工作温度:-10摄氏度 到 +50摄氏度

  • 尺寸:31.6mmx23.7mm

  • 接口:3PIN接口

  • 输入信号:数字信号(方波)

3.实验组件

控制板 * 1

扩展板 * 1

USB线*1

无源蜂鸣器模块

3P 转杜邦线母 *1

4.模块接线图

5.测试代码

/*
  Keyes Arduino智能家居套装
  第4课 无源蜂鸣器
  http://www.keyes-robot.com
*/

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);
}

6.实验结果

上传代码到开发板,就会听到无源蜂鸣器播放这首“生日快乐歌”了

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毫秒。