[教程]音乐电平表

查看: 216|回复: 0

[教程] 音乐电平表

[复制链接]
项目由来
声音是用来听的,但是听觉又是不真切的。为此,人们发明了电平表,用来直观地视觉佐证。每当看见仪表盘上的跳跃光柱,踏实的感觉油然而生,有声音啦!
类似我们在音乐播放器或者其他软件中看到的波形/条形,看着它们随着音乐跳动,心里感觉就特别舒服。那为什么不自己动手做一个呢?
截图201902030848456255.png
材料清单
1x

Micro:bit

链接
1x
Micro:bit Boson 扩展板链接
1x
全彩 LED 灯带链接
1x
模拟角度传感器链接
1x
模拟声音传感器链接
步骤1 连接硬件

硬件连接很简单,首先将 Micro:bit 插入到 Mico:bit Boson 扩展板上,然后用连接线依次将模拟角度传感器、模拟声音传感器和彩色 LED 灯带接到扩展板的 P0、P1 和 P2 接口上。在开始编程之前还需用数据线连接 Micro:bit 和计算机。
屏幕快照 2019-02-03 08.22.13.png
步骤2 实现声控灯带功能

模拟声音传感器是基于麦克风为声音检测的传感器,可用来对周围环境中的声音强度进行检测。我们可以将声音的强度与灯带亮起的 LED 灯的数目做一个关联。即声音越响,亮起的 LED 灯越多。
我们打开 Mind+,选择【上传模式】,在【扩展】的【主控板】中选择【Micro:bit】,然后在【显示器】中选择【WS2812 RGB 灯】。
截图201902030849055559.png
首先在【Microbit】选项卡中找到“Micro:bit 主程序开始”,拖到右侧脚本区。然后需要设置彩色 LED 灯带的具体 LED 数目和亮度。从【显示器】选项卡中找到“RGB 灯引脚 P2 灯总数 7 亮度 255”,将其拖到“Micro:bit 主程序开始”下面。
接下来就一直重复读取声音传感器的数值,依据数值的大小在彩色 LED 灯带上显示相对应的柱状图。我们可以通过显示柱状图命令来实现该功能。我们一共有 7 颗 LED 灯泡,所以只能显示 7 以内的整数颗。而 LED 灯泡是从 0 开始编号的。所以需要修改一下数字。另外,声音传感器读出来的数值我们并不知道在哪个区间,也不太好和灯带的区间 [0, 6] 进行映射。那就假设读出来的数值在 [0, 511] 之间吧。

截图201902030849122458.png
灯带上的柱状图显示了以后我们需要让它持续一段时间,也就是等待一会儿。不然马上就没了,效果不理想。
步骤3
实现灵敏度调节功能
如果声音太轻,LED 灯带上的柱状图波动不明显怎么办?或者声音太响了,灯带上的柱状图一直飙升到顶部怎么办?这时的显示效果就很糟糕了。那能不能增加一个调节灵敏度的功能呢?这样就可以在不改变声音大小的情况下更改柱状图的显示效果,使其看上去“更顺眼”些。
我们可以增加一个模拟角度传感器,通过调节角度传感器,更改声音最高值的范围。在上面,我们人为假设声音的上限是 511,基本已经满足一般声音大小的测定。为了更改这个上限的范围,我们可以在 500 上下浮动 250 。即通过角度传感器,将声音的最大值映射到 [250, 750] 之间。稍稍修改一下程序块即可实现。

截图201902030849182672.png
步骤4
制作外观
功能都实现了,测试也通过了。那么来做一下外观吧。简单起见我就用了 Boson 扩展板的包装盒。将两个传感器固定在盒子底部,灯带固定在盒子中间。这样就实现了一个简单的音乐电平表!
屏幕快照 2019-02-03 08.21.40.png
效果演示

项目代码
https://gitee.com/TomHGTang/music_level_meter.git
改进提升

1. 电平表一直都处于工作状态,为了节约能源,可以增加一个开关,实现开关电平表的功能。
2. 外观看上去有些简陋,可以重新设计,或者采用 3D 打印。
原帖发布于 http://makelog.dfrobot.com.cn/article-983.html


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail