This repository has been archived by the owner on Jul 11, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 36
蜂鸣器
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秒可以模拟音符之间的停顿效果。歌谱中遇到休止符也可以类似这样处理。
程序全部完成,点击运行就可以了。
代码存档文件在这里(右键-另存为)。