所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开
挑战二:音乐电平表
汤果 2019-02-26 10:51:11
1
0
简单

项目由来

声音是用来听的,但是听觉又是不真切的。为此,人们发明了电平表,用来直观地视觉佐证。每当看见仪表盘上的跳跃光柱,踏实的感觉油然而生,有声音啦!

projectImage

类似我们在音乐播放器或者其他软件中看到的波形/条形,看着它们随着音乐跳动,心里感觉就特别舒服。那为什么不自己动手做一个呢?

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

硬件连接很简单,首先将 Micro:bit 插入到 Mico:bit Boson 扩展板上,然后用连接线依次将模拟角度传感器、模拟声音传感器和彩色 LED 灯带接到扩展板的 P0、P1 和 P2 接口上。在开始编程之前还需用数据线连接 Micro:bit 和计算机。

projectImage
步骤2 步骤2
实现声控灯带功能

模拟声音传感器是基于麦克风为声音检测的传感器,可用来对周围环境中的声音强度进行检测。我们可以将声音的强度与灯带亮起的 LED 灯的数目做一个关联。即声音越响,亮起的 LED 灯越多。

我们打开 Mind+,选择【上传模式】,在【扩展】的【主控板】中选择【Micro:bit】,然后在【显示器】中选择【WS2812 RGB 灯】。

projectImage

首先在【Microbit】选项卡中找到“Micro:bit 主程序开始”,拖到右侧脚本区。然后需要设置彩色 LED 灯带的具体 LED 数目和亮度。从【显示器】选项卡中找到“RGB 灯引脚 P2 灯总数 7 亮度 255”,将其拖到“Micro:bit 主程序开始”下面。

接下来就一直重复读取声音传感器的数值,依据数值的大小在彩色 LED 灯带上显示相对应的柱状图。我们可以通过显示柱状图命令来实现该功能。我们一共有 7 颗 LED 灯泡,所以只能显示 7 以内的整数颗。而 LED 灯泡是从 0 开始编号的。所以需要修改一下数字。另外,声音传感器读出来的数值我们并不知道在哪个区间,也不太好和灯带的区间 [0, 6] 进行映射。那就假设读出来的数值在 [0, 511] 之间吧。

projectImage

灯带上的柱状图显示了以后我们需要让它持续一段时间,也就是等待一会儿。不然马上就没了,效果不理想。

步骤3 步骤3
实现灵敏度调节功能

如果声音太轻,LED 灯带上的柱状图波动不明显怎么办?或者声音太响了,灯带上的柱状图一直飙升到顶部怎么办?这时的显示效果就很糟糕了。那能不能增加一个调节灵敏度的功能呢?这样就可以在不改变声音大小的情况下更改柱状图的显示效果,使其看上去“更顺眼”些。

我们可以增加一个模拟角度传感器,通过调节角度传感器,更改声音最高值的范围。在上面,我们人为假设声音的上限是 511,基本已经满足一般声音大小的测定。为了更改这个上限的范围,我们可以在 500 上下浮动 250 。即通过角度传感器,将声音的最大值映射到 [250, 750] 之间。稍稍修改一下程序块即可实现。

projectImage
步骤4 步骤4
制作外观

功能都实现了,测试也通过了。那么来做一下外观吧。简单起见我就用了 Boson 扩展板的包装盒。将两个传感器固定在盒子底部,灯带固定在盒子中间。这样就实现了一个简单的音乐电平表!

projectImage

效果演示

项目代码

https://gitee.com/TomHGTang/music_level_meter.git

改进提升

1. 电平表一直都处于工作状态,为了节约能源,可以增加一个开关,实现开关电平表的功能。

2. 外观看上去有些简陋,可以重新设计,或者采用 3D 打印。

Makelog作者原创文章,未经授权禁止转载。
1
0
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
[[c.comment_content]]