61112| 5
|
【古德微】随音乐节奏闪动的LED灯带 |
在以前听录音机的时候,一直对录音机上面那个随音乐节奏闪动的电平表很感兴趣,留下了比较深的影响。拿到漂流套件中的LED灯带后,首先是照着直播群里面好几个老师的教程做了几个例子,后来就想到了以前的那个电平表,何不用灯带来模拟实现一下呢?整理思路,连接器材,编程实现,于是就有了下面的过程,有不妥之处,请多多指点,先谢谢了! 一、材料 古德微树莓派×1、树莓派扩展板×1、公对母杜邦线×3、模数转换器×1、声音传感器×1、灯带×1. 二、思路 利用声音传感器获取音乐的强度值,强度值越大,灯带亮起的灯珠越多。同时,灯珠的颜色也从绿色渐变到红色。 三、硬件连接 1.声音传感器 声音传感器的作用相当于一个话筒(麦克风) ,它用来接收声波。该传感器内置一个对声音敏感的电容式驻极体话筒。声波使话筒内的驻极体薄膜振动,导致电容的变化,而产生与之对应变化的微小电压。这一电压随后被转化成0-5V的电压。如图所示为套件包含的声音传感器, 声音传感器共有3个管脚,分别为VCC、GND、OUT, 利用公对母杜邦线对应接在树莓派扩展板24号端口VCC、GND、A0上。 2.模数转换器 利用数模转换器可以将音量传感器采集的模拟值转换为数字值,将转换器按照各个针脚对于的标记插到树莓派扩展器即可。 3.灯带 将灯带的输入口直接接到树莓派扩展板的18号口即可,插的时候注意三个针脚要相互对应,不要插反了。 四、编程实现 1.利用将声音传感器获得的声音强度值通过模数转换器转换为0-32767之间的数字值,并将其映射到0-19之间,也就是说对于灯带上20个LED灯珠。映射后的值要作为需要亮起的灯珠数,还需要做取整操作,最后讲这个值保存在变量yl中。 因为考虑到环境噪声,还有声音传感器获取的值除了与音响放出的音量有关外,还有音量传感器话筒与音响的距离有关,我是取了1000-20000的区间,实践当中可以根据实际情况调试改变。 2.亮灯函数 使用前面的音量值也就是要亮起的灯珠数作为函数的输入参数,函数内用一个循环逐个给灯珠发送RGB值,根据自己实践来看,色值在100以上已经肉眼区别不大,所以我把色值范围设定为100,因为是从绿色变化到红色,所以蓝色值为0,而绿色是从0变化到100,红色是从100变化到0。 3.熄灯函数 将所有灯珠颜色值赋予0。 4.主函数 利用循环不断获取声音值,作为参数传递给亮灯函数,间隔0.1秒后熄灯,然后反复循环。 说明:虽然灯带有60个灯珠,我一开始也想是让60个灯珠共同实现,但是发现那样循环的延不能太短,而延时较长的话感觉闪灯跟音乐节奏有点协调的感觉,所以最多用了20个灯珠。 五、感悟: 1.用古德微的图形化编程平台编程真是方便,通过拖放相应功能的积木块拼接即可实现编程,再也不用敲苦涩的代码,什么安装包、权限什么的统统不用管了,缺点就是让自己越来越懒了,更加没有去看代码的动力了。 2.树莓派的功能更强大,只要点击运行,代码瞬间传到树莓派,再也不用Arduino那样等待比较长的上传时间。 最终效果: |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed