查看: 280|回复: 3

【古德微】随音乐节奏闪动的LED灯带

[复制链接]
在以前听录音机的时候,一直对录音机上面那个随音乐节奏闪动的电平表很感兴趣,留下了比较深的影响。拿到漂流套件中的LED灯带后,首先是照着直播群里面好几个老师的教程做了几个例子,后来就想到了以前的那个电平表,何不用灯带来模拟实现一下呢?整理思路,连接器材,编程实现,于是就有了下面的过程,有不妥之处,请多多指点,先谢谢了!
一、材料
古德微树莓派×1、树莓派扩展板×1、公对母杜邦线×3、模数转换器×1、声音传感器×1、灯带×1.
二、思路
利用声音传感器获取音乐的强度值,强度值越大,灯带亮起的灯珠越多。同时,灯珠的颜色也从绿色渐变到红色。
三、硬件连接
1.声音传感器

202003247750..png
声音传感器的作用相当于一个话筒(麦克风) ,它用来接收声波。该传感器内置一个对声音敏感的电容式驻极体话筒。声波使话筒内的驻极体薄膜振动,导致电容的变化,而产生与之对应变化的微小电压。这一电压随后被转化成0-5V的电压。如图所示为套件包含的声音传感器,
声音传感器共有3个管脚,分别为VCC、GND、OUT, 利用公对母杜邦线对应接在树莓派扩展板24号端口VCC、GND、A0上。
2.模数转换器
202003244987..png
利用数模转换器可以将音量传感器采集的模拟值转换为数字值,将转换器按照各个针脚对于的标记插到树莓派扩展器即可。
202003242807..png
3.灯带
将灯带的输入口直接接到树莓派扩展板的18号口即可,插的时候注意三个针脚要相互对应,不要插反了。
202003244515..png
四、编程实现

1.利用将声音传感器获得的声音强度值通过模数转换器转换为0-32767之间的数字值,并将其映射到0-19之间,也就是说对于灯带上20个LED灯珠。映射后的值要作为需要亮起的灯珠数,还需要做取整操作,最后讲这个值保存在变量yl中。

202003244806..png

因为考虑到环境噪声,还有声音传感器获取的值除了与音响放出的音量有关外,还有音量传感器话筒与音响的距离有关,我是取了1000-20000的区间,实践当中可以根据实际情况调试改变。

2.亮灯函数

202003242069..png

使用前面的音量值也就是要亮起的灯珠数作为函数的输入参数,函数内用一个循环逐个给灯珠发送RGB值,根据自己实践来看,色值在100以上已经肉眼区别不大,所以我把色值范围设定为100,因为是从绿色变化到红色,所以蓝色值为0,而绿色是从0变化到100,红色是从100变化到0。

3.熄灯函数

202003247164..png

将所有灯珠颜色值赋予0。

4.主函数

202003247795..png

利用循环不断获取声音值,作为参数传递给亮灯函数,间隔0.1秒后熄灯,然后反复循环。
说明:虽然灯带有60个灯珠,我一开始也想是让60个灯珠共同实现,但是发现那样循环的延不能太短,而延时较长的话感觉闪灯跟音乐节奏有点协调的感觉,所以最多用了20个灯珠。
五、感悟:
1.用古德微的图形化编程平台编程真是方便,通过拖放相应功能的积木块拼接即可实现编程,再也不用敲苦涩的代码,什么安装包、权限什么的统统不用管了,缺点就是让自己越来越懒了,更加没有去看代码的动力了。
2.树莓派的功能更强大,只要点击运行,代码瞬间传到树莓派,再也不用Arduino那样等待比较长的上传时间。
最终效果:

DFrJ5KYVQaH  初级技匠

发表于 2020-3-25 19:14:11

学习中,早就想做这么个灯带了
回复

使用道具 举报

glwz007  中级技师
 楼主|

发表于 2020-3-26 17:18:47

DFrJ5KYVQaH 发表于 2020-3-25 19:14
学习中,早就想做这么个灯带了

很好玩,也很方便。
回复

使用道具 举报

DFrJ5KYVQaH  初级技匠

发表于 2020-3-27 07:51:21

恩,看了你的文章做了一个
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

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

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

mail