标题: 单片机控制ws2812,声音控制流动效果程序咋写出来呀? [打印本页]

作者: qwettyuio    时间: 2022-11-9 14:53
标题: 单片机控制ws2812,声音控制流动效果程序咋写出来呀?
有没有大佬知道,谢谢大家
检测到声音输入,产生4-5RGB点亮,间隔3-4RGB熄灭,然后产生新的点亮,然后向左边移动,

没有检测到声音输入,测不在产生点亮RGB,将已近点亮的移动完则结束
本人使用的是arduino控制板或者esp32控制板,使用的驱动库是FastLED和Adafruit_NeoPixel驱动WS2812
求解的是,使用什么方法可以实现这样一个功能,求指导一下,或者提供一下参考例程,谢谢

1667976755808.png (153.66 KB, 下载次数: 71)

没有声源

没有声源

1667976466458.png (151.12 KB, 下载次数: 75)

有声源

有声源

作者: hhdsdy    时间: 2022-11-9 17:45
只是用有没声音来控制显示个数,而不是用声音的大小来控制移动的速度,这不难啊
作者: qq603599910    时间: 2022-11-9 19:51
首先会硬件,把声音放大整形,然后做比较器产生数字信号连到单片机IO,然后用连续读取IO,用IO状态信号做移相显示.就是那么简单,如果没有硬件基础那我说的话基本也是像唱天书一样.
作者: qwettyuio    时间: 2022-11-10 09:15
hhdsdy 发表于 2022-11-9 17:45
只是用有没声音来控制显示个数,而不是用声音的大小来控制移动的速度,这不难啊

不是控制移动速度,是控制左侧产生固定点亮4个RGB灯珠,间隔三个,再继续产生;向右侧移动,移动至最右侧算结束,如果没有声音接受则不继续产生,将剩下的移动结束即可,

使用的是arduino控制板或者esp32控制板,使用的驱动库是FastLED和Adafruit_NeoPixel驱动WS2812

我想问一下要实现这个功能,是需要什么方法才可以?能指导一下吗
作者: yzwzfyz    时间: 2022-11-10 09:27
换个思想吧,没有方向这一说!
1、将各个灯的明暗状态,看作是的个数组的组元素(A1,A2,A3,A4……)。A的每一位0/1对应一个灯的明暗。
2、每间隔一个时间TG,切换一个组元素,送出显示。
这样,改变TG的大小,就改变了速度。
改变,A1,A2,A3,A4值(或排序),就改变的LED灯的显示状态。
如果,A1,A2,A3,A4……的组合,形成左移的效果,看上去就左移了;形成右移的效果,看上去就右移了;看上去形成跳动的效果,看上去就跳动了……
你想怎么玩就怎么玩!
程序构思巧妙,易写,逻辑清晰。
你要玩的花色,就是在如何将LED的各种显示组合,编制了A1,A2,A3……
如果,你设计了N个方案(单灯左移,单灯右移,双灯左移,双灯右移,暂停、全闪、……),就做成N的数组。每按一次键就换一个数组取值,显示。
作者: coody_sz    时间: 2022-11-10 10:28
对于会单片机程序的人,这个非常简单,类似做音频电平指示。
作者: qwettyuio    时间: 2022-11-10 10:33
yzwzfyz 发表于 2022-11-10 09:27
换个思想吧,没有方向这一说!
1、将各个灯的明暗状态,看作是的个数组的组元素(A1,A2,A3,A4……)。A的 ...

使用的ws2812灯珠数量是32,开始是一个个点亮,直达达到六个左右,间隔三个,在继续一个个出现点亮6,消失则是一个个减少,在这两个步骤我不太了解怎么解决,求指导一下
作者: yzwzfyz    时间: 2022-11-12 17:09
32个灯用4个字节控制:灯接P0-3口刚好32个
做个数组{A1,A2,A3.....An},各个元素都是32位,每位对准一个IO口,1亮0不亮。
每间隔一段时间(0.5秒),取出一个值,送到IO去显示,就可以了。
数组取值如下:
开始是一个个点亮,直达达到六个左右:
第1个亮:        A1=00000001H【00000000,00000000,00000000,00000001】
第2个亮:        A2=00000003H【00000000,00000000,00000000,00000011】
第3个亮:        A3=00000007H【00000000,00000000,00000000,00000111】
第4个亮:        A4=0000000FH【00000000,00000000,00000000,00001111】
第5个亮:        A5=0000001FH【00000000,00000000,00000000,00011111】
间隔3个第9亮:A6=0000011FH【00000000,00000000,00000001,00011111】
消失第9个:     A7=0000001FH【00000000,00000000,00000000,00011111】
消失第5个:     A8=0000000FH【00000000,00000000,00000000,00001111】
............

作者: 郑汉松    时间: 2022-11-14 14:06
简单,就是麦克风+运算放大器+ADC,声音大就多亮几个灯,声音小就少亮几个灯
作者: 快乐眼泪    时间: 2023-2-28 20:25
我也正想做个,楼主成功了吗?
作者: qwettyuio    时间: 2023-3-20 15:32
快乐眼泪 发表于 2023-2-28 20:25
我也正想做个,楼主成功了吗?

是可行的,目前已经完成了





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1