![]() |
發布時間: 2022-11-9 14:53
正文摘要:有沒有大佬知道,謝謝大家 檢測到聲音輸入,產生4-5RGB點亮,間隔3-4RGB熄滅,然后產生新的點亮,然后向左邊移動, 沒有檢測到聲音輸入,測不在產生點亮RGB,將已近點亮的移動完則結束 本人使用的是arduino控制 ... |
快樂眼淚 發表于 2023-2-28 20:25 是可行的,目前已經完成了 |
我也正想做個,樓主成功了嗎? |
簡單,就是麥克風+運算放大器+ADC,聲音大就多亮幾個燈,聲音小就少亮幾個燈 |
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】 ............ |
yzwzfyz 發表于 2022-11-10 09:27 使用的ws2812燈珠數量是32,開始是一個個點亮,直達達到六個左右,間隔三個,在繼續一個個出現點亮6,消失則是一個個減少,在這兩個步驟我不太了解怎么解決,求指導一下 |
對于會單片機程序的人,這個非常簡單,類似做音頻電平指示。 |
換個思想吧,沒有方向這一說! 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的數組。每按一次鍵就換一個數組取值,顯示。 |
hhdsdy 發表于 2022-11-9 17:45 不是控制移動速度,是控制左側產生固定點亮4個RGB燈珠,間隔三個,再繼續產生;向右側移動,移動至最右側算結束,如果沒有聲音接受則不繼續產生,將剩下的移動結束即可, 使用的是arduino控制板或者esp32控制板,使用的驅動庫是FastLED和Adafruit_NeoPixel驅動WS2812 我想問一下要實現這個功能,是需要什么方法才可以?能指導一下嗎 |
首先會硬件,把聲音放大整形,然后做比較器產生數字信號連到單片機IO,然后用連續讀取IO,用IO狀態信號做移相顯示.就是那么簡單,如果沒有硬件基礎那我說的話基本也是像唱天書一樣. |
只是用有沒聲音來控制顯示個數,而不是用聲音的大小來控制移動的速度,這不難啊 |