![]() |
發布時間: 2021-8-6 18:34
正文摘要:看見X寶 賣的ws2812燈帶覺得挺好玩,閑來無事買了一條1米60燈的。自己寫了個驅動 :功能 1 燈全亮(可調7色),2流水燈(可調7色),3 燈全亮閃爍(可調7色) 制作出來的實物圖如下: |
別的我沒試 ,我主要是看到按鍵掃描沒有去抖 沒有延時,就對這個按鍵掃描函數比較感興趣,我就試了按鍵掃描這個函數,發現是有問題的,根本就不工作! /******************按鍵掃描******************************/ /* 功能 : 設置S6按鍵長短按識別小于20MS短按 長于3S長按 */ void keyScan() { static unsigned char i; static unsigned int key_press_time = 0; // ……請記得標為靜態變量 static unsigned int key_press_time2 = 0; // ……請記得標為靜態變量 if(s6==0) { if(++key_press_time <=0 ) --key_press_time;//計量按鍵時間,并避免數據溢出 if(key_press_time==3000) { //在此寫下按鍵長按3s時要做的事情 LED2_REV(); Loop_Speed= Loop_Speed-15; } } else { if(10<=key_press_time && key_press_time < 3000) { //大于20ms小于3s,視為短按,在此寫下寫短按的處理代碼 LED1_REV(); i++; switch(i) //s6按鍵LED7色控制 { case 0 : {RR=0X00;GG=0X00;BB=0XFE; break;} case 1 : {RR=0X00;GG=0XFE;BB=0X00; break;} case 2 : {RR=0XFE;GG=0X00;BB=0X00; break;} case 3 : {RR=0XFE;GG=0XFE;BB=0X00; break;} case 4 : {RR=0X00;GG=0XFE;BB=0XFE; break;} case 5 : {RR=0XFE;GG=0X00;BB=0XFE; break;} case 6 : {RR=0XFE;GG=0XFE;BB=0XFE; break;} case 7 : {i=0; break;} } } key_press_time=0; } 下面這段話大家來討論看看 這完全行不通啊,24M的單片機跑起來 ++key_press_time; key_press_time==3000,需要3秒鐘?即使是6M的時鐘跑起來 加到3000也不要3秒鐘吧! if(++key_press_time <=0 ) --key_press_time;//計量按鍵時間,并避免數據溢出 if(key_press_time==3000) { //在此寫下按鍵長按3s時要做的事情 |
烈火 發表于 2025-3-4 21:05 30塊包郵的邏輯分析儀,你值得擁有 |
參考了一下,單色沒有實現。是什么原因? |
大家都說有問題?那我只好下載下來研究和驗證一下了。 |
這個挺好的,我正想編輯這個程序驅動自己的彩燈,感謝樓主提供,我可以參考一下 |
服了,就一個IO端口,要啥原理圖,要啥自行車? ![]() |
師傅,測試的時候沒有單色藍光,檢查下哪里出了問題? |
非常感謝,終于找到想要的了。 |
有原理圖么 |
謝謝樓主分享,難得的好資料。 |
一上電變全彩閃爍,mode初始化為0應該是關閉的狀態,燈不亮,通過按下按鍵才亮的吧 |
我看了下代碼,發現好多變量都沒初始化就開始累加計算了,真的無語,確定不會出錯嗎 |
a399288395 發表于 2022-1-8 16:13 下載完整程序好好看看再說話。。。。。。就看了一段直接判斷程序不能用也是絕了。。。。。。。 |
gaochen15159 發表于 2021-11-10 08:48 這東西是串行控制,燈是成品,控制隨便啦個IO就行了 |
謝謝樓主分享,難得的好資料,感謝,經過編譯,正常點亮 |
huping137 發表于 2021-11-4 09:27 時序在WS2812B.H里面 |
幾百個燈珠可以控制嗎? |
有沒有原理圖可以借鑒一下,我也想自己做一個玩一下 |
這個程序里是不是少了發送0和1的時序了 |
用STC哪個型號的單片機? |
有原理圖嗎大師 |