第九章 生日快乐歌-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2116|回复: 0

第九章 生日快乐歌

[复制链接]
发表于 2022-2-9 10:02 | 显示全部楼层 |阅读模式

[md]## 蜂鸣器

蜂鸣器分电磁式和压电式,每种里面还会分有源与无源。这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫;而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用一定频率的的方波才能驱动它鸣叫。

有源蜂鸣器直接接上额定电源(新的蜂鸣器在标签上都有注明)就可以连续发声,而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能发声。

无源蜂鸣器模块(如图)是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、报警器、电子玩具等电子设备中。
01.jpg
## 简单的门铃

简单的门铃,本节我们使用无源蜂鸣器模块,来制作一个门铃。主要是使用一个按钮开关和蜂鸣器组成。当门外的客人按动按钮开关的时候,蜂鸣器发出响声,提醒屋里的人去开门。

+ **硬件连接**

按钮模块 —— D2  蜂鸣器 —— D8
02.jpg

+ **程序编写**

首先让蜂鸣器发出声音,在执行器程序模块中找到,播放声音的函数,让连接在8号IO口上的蜂鸣器播放一个频率的声音1秒钟,随后将播放结束。
03.jpg
然后我们添加按键作为门铃按钮,连接在2号引脚上,让程序检查按键被按下,就播放门铃声音。
04.jpg
由于我们的按键模块是按下时输出0,松开时输出1,所以,我们添加了逻辑“非”来判断按键是否被按下,被按下时,2号数字输入管脚得到的是0, 非0等于1,1就表示判断结果是“真’那么久执行以下播放声音的函数。
05.jpg
我们控制蜂鸣器的输出频率和延时时间便可以控制蜂鸣器播放不同的音调。我们将程序下载进arduino中,我们按一下按键,观察是否播放了门铃声,验证我们的程序是否正确。

在测试结果中,我们可以正常听到门铃的声音,但这声音和真实的门铃声音有一定区别。接下来做下一步测试,我们将发声的频率和延时时间修改一下。

## 乐理知识

在音乐中,最基础的就是“do re mi fa sol la si ”,这几个音也有高,中,低之分,那么我们先来发中音吧。在程序中,音调对应的也是频率,“哆来咪发梭拉西”对应的就是简谱中的“1234567”也对应着音调“CDEFGAB”

要了解上面例程的频率这个数值怎么得来,首先我们需要了解两点:

1、一首音乐都是由很多音阶组成,每一个音阶都有一个固有频率
06.jpg
2、并不是每个音阶都播放一样的时间,就能形成一首乐曲。每个音符只有在播放一定的时间才能构成一首优美的曲子。那么如何确定每个音阶的播放时间呢? 我们知道,音符节奏氛围1拍、1/2拍、1/4拍、1/8拍等等,我们规定一拍音符的时间为1,1/2拍为0.5,1/4拍为0.25,1/8拍为0.125 .....,所以我们可以为每个音符赋予这样的拍子播放出来,这样就形成了音乐。

## 生日快乐歌

我们举例说明生日快乐歌的编写。首先我们网上找到一首生日快乐歌的简谱。这里我们采用中音播放。

07.jpg
“祝”对应的音阶是5,其频率对应是659.33,我们这里取整数659。
看完音调了我们再来认识节拍,如果数字下面有下划线我们就设置它的节拍为1/2,如果数字后面有一个横杠,我们就设置它的节拍为2,如果只是单个数字,节拍就是为1。所以“祝”持续的时间是1\* 3/4 \* 1/2 秒 ,也就是375毫秒。接下来其他的音符我们一一对应。所以第一句“祝你生日快乐”对应的程序变成这样:
08.jpg
## 发散思维大课堂

上边我们讲了通过乐谱自制播放音乐的基本原来,接下来我们可以完成剩下的整个乐章,而后制作更多的音乐播放器。[/md]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-27 14:24 , Processed in 0.099686 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表