所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

音量柱

finally finally 2019-08-06 10:31:38

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

学习内容:

模拟输入 

数值映射    

材料清单 材料清单
1x
micro:bit
1x
micro:bit扩展板
1x
RGB灯带
1x
声音传感器
1x
角度旋钮
步骤1 步骤1
课前了解

材料介绍:

角度传感器,又称旋转电位器,实际上一个阻值为10K的旋转电阻。三个引脚自左至右分别与Arduino UNO板上的正极(5V)、模拟输入端口、负极(GND)相连。当处在不同角度值时,端口VCC、OUT之间电阻阻值不同,按照物理上的分压定律,触角返回的电压值也在0~5V(或3.3V,取决于电路输入电压)之间变化,Arduino UNO板的模拟端口根据返回的电压数值与输入电压之间5V的比例关系,换算成0~1023之间的具体数值,返回给UNO板。角度传感器旋转角度为0°~300°,对应返回电压值为0~5V,对应模拟信号数值为0~1023。

projectImage

声音传感器:

该传感器内置一个对声音敏感的电容式驻极体话筒。声波使话筒内的驻极体薄膜振动,导致电容的变化,而产生与之对应变化的微小电压。这一电压随后被转化成0-5V的电压,经过A/D转换被数据采集器接受,并传送给计算机。

projectImage

模拟输入:

模拟信号 与数字信号的高低电平仅有高(HIGH,5V)、低(LOW,0V)两种电压状态不同,模拟信号的电压可以在0~5V之间变化,为了能较为精准的获取返回的电压信号,Arduino将其切分成2^10共1024级,每级对应0~1023范围内的一个整数数值。

映射:

在数学里,映射是个术语,指两个元素的集之间元素相互“对应”的关系,为名词。映射,或者射影,在数学及相关的领域经常等同于函数。 基于此,部分映射就相当于部分函数,而完全映射相当于完全函数。

projectImage

了解了这些内容就可以开始创作了

projectImage
步骤2 步骤2
硬件连接

角度旋钮——P0

声音传感器——P1

RGB灯带——P2

步骤3 步骤3
实现声控灯带功能

1选择灯带

2在【Microbit】选项卡中找到“Micro:bit 主程序开始”,拖到右侧脚本区。然后需要设置彩色 LED 灯带的具体 LED 数目和亮度。从【显示器】选项卡中找到“RGB 灯引脚 P2 灯总数 7 亮度 255”,将其拖到“Micro:bit 主程序开始”下面。 接下来就一直重复读取声音传感器的数值,依据数值的大小在彩色 LED 灯带上显示相对应的柱状图。我们可以通过显示柱状图命令来实现该功能。我们一共有 7 颗 LED 灯泡,所以只能显示 7 以内的整数颗。而 LED 灯泡是从 0 开始编号的。所以需要修改一下数字。另外,声音传感器读出来的数值我们并不知道在哪个区间,也不太好和灯带的区间 [0, 6] 进行映射。那就假设读出来的数值在 [0, 511] 之间吧。

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

projectImage

完成后可以根据个人喜好搭建外观.

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