Skip to content
This repository has been archived by the owner on Jul 11, 2024. It is now read-only.

蜂鸣器

alienzhangyw edited this page Apr 25, 2020 · 3 revisions

常见的蜂鸣器模块主要有两种,一种是有源蜂鸣器,可以直接当做数字输出设备进行控制。使用方法这里有提到。

另外一种是无源蜂鸣器,需要用一定频率的方波驱动,才能发出声音。无源蜂鸣器模块

本文介绍的是使用低电平触发无源蜂鸣器来播放歌曲。

https://video.zhihu.com/video/1213141393801490432

首先需要找到所需要的歌曲乐谱,比如《小星星》。

《小星星乐谱》

然后还需要知道不同的音符所对应的声音频率:

音符频率表

通过简单的乐理知识我们可以查到,在《小星星》中,Do的频率是261.63Hz,Re是293.66Hz,其他的依次类推。

在BlockPi中,首先用变量保存要用到的音符频率,方便调用:

然后将一首歌的每一个音符按顺序保存到列表中:

注:这里使用这种方法新建列表是为了好看和方便修改,你可以使用更简单的方法。

用同样的方式把每个音符的时长保存在一个列表里:

将蜂鸣器设置为PWM输出设备,用遍历列表的方式,修改PWM的频率和持续时长,就可以播放出音符了:

注:设置占空比为0并等待0.1秒可以模拟音符之间的停顿效果。歌谱中遇到休止符也可以类似这样处理。

程序全部完成,点击运行就可以了。

代码存档文件在这里(右键-另存为)。