本文來源電子發燒友社區,作者:HonestQiao, 帖子地址:https://bbs.elecfans.com/jishu_2287848_1_1.html
效果演示(開發板體驗視頻,詳見作者原帖子文章)
說干就干,先在Adafruit NeoPixel 擴展庫的Arduino開發環境中,安裝Adafruit NeoPixel 擴展庫,方法如下:
安裝完成后,開發板選擇ADP-Corvette-T1,然后點擊編譯。
沒想到,杯具的事情發生了,錯誤提示:Adafruit NeoPixel 擴展庫不支持該開發板。
不甘心,這么通用的WS2812B,一定要辦法驅動起來。
仔細看了 ADP-Corvette-T1 的官方資料,了解到如下信息:
在開發板上,提供了SPI數據傳輸接口,而WS2812B真是使用SPI來驅動的。
詳細查看板子的定義:
IO11可復用為SPI/MOSI,剛好可以用作WS2812B的數據控制。
參考開頭提供的文章,最終具體的連線如下:
具體的實物連線如下:
直接使用SPI底層設備來驅動,需要使用到Arduino官方的SPI庫,其官方網址為:SPI - Arduino Reference
而在此之前,我還分享過另外一篇控制WS2812B的文章:Debian-StarFive下的SPI驅動WS2812B炫彩燈珠,在該篇文章中,就詳細的說明了,想要控制,應該如何發送數據。
在上面的這篇分享中,控制的是單顆LED燈珠。在ADP-Corvette-T1開發板上,這次我們要控制8*8點陣共64顆LED燈珠。
通過對Arduino官方的SPI庫資料的學習,最終完成了演示代碼,實現了流水燈的效果。
在該演示代碼中,同時包括:
1. 串口調試輸出
2. 板載LED控制
3. SPI控制WS2812B
具體代碼文件:
代碼展示:
上述代碼的具體說明:
1. 全局定義:
1). 使用SPI.h,確定使用SPI庫
2). 定義燈珠、引腳信息
3). 定義要發送的數據信息;關于其具體的定義,可以查看Debian-StarFive下的SPI驅動WS2812B炫彩燈珠
4). 定義當前要點亮的燈珠
5. 定義lgiht_n函數,表示通過SPI發送控制數據,當前燈珠發送點亮數據,其他的發送熄滅數據;具體顏色,根據i值取余取前面定義的顏色。
2. 啟動設置部分:setup()
1). 設置串口速度
2). 設置D13為輸出,用于控制板載的LED3(在板子背面)
3). 定義SPI的傳送參數;具體的參數說明,后面詳細的說。
3. 循環部分:loop()
1). 串口輸出當前要點亮的LED燈珠
2). 根據當前要點亮的燈珠序號取2的余,來亮滅LED3
3). 點亮指定的LED燈珠
4). 延時
5). 指向下一刻燈珠;如果達到最大,則從頭開始。
在上面的代碼中,SPI參數設置部分,尤為重要。
要設置SPI參數,有兩種辦法:
1). SPI.setClockDivider():相對于系統時鐘設置SPI時鐘分頻器。
關于分頻器的基本知識,我在定時器使用基礎:使用系統時基定時器和基本定時器閃爍LED分享中,有講過。
因為 ADP-Corvette-T1開發板 的最高頻率為 96MHz,我們找一個接近 6.4MHz的分頻。
分頻器可以使用的系統定義為:
SPI_CLOCK_DIV2,SPI_CLOCK_DIV4,SPI_CLOCK_DIV8, SPI_CLOCK_DIV16,SPI_CLOCK_DIV32,SPI_CLOCK_DIV64,SPI_CLOCK_DIV128
在其中,16分之一接近6.4MHz,所以這里可以使用SPI_CLOCK_DIV16。
在該方式下,其他的參數使用默認值即可。
2). SPI.beginTransaction()
通過傳入SPISettings()獲取的定義參數來初始化SPI設備;
SPISettings()具體定義為:SPISettings(speedMaximum,dataOrder,dataMode)
其中:
speedMaximum:表示時鐘
dataOrder:表示數據發送優先順序,MSBFIRST表示高位優先,LSBFIRST表示低位優先。
dataMode:表示SPI的四種操作模式:
2.1) 模式0:默認值,時鐘通常為低電平(CPOL = 0),數據在從低電平到高電平(前沿)(CPHA = 0)的轉換時采樣。
2.2)模式1:時鐘通常為低電平(CPOL = 0),數據在從高電平到低電平(后沿)(CPHA = 1)的轉換時采樣。
2.3)模式2:時鐘通常為高電平(CPOL = 1),數據在從高電平到低電平(前沿)(CPHA = 0)的轉換時采樣。
2.4)模式3:時鐘通常為高電平(CPOL = 1),數據在從低電平到高電平(后沿)(CPHA = 1)的轉換時采樣。
演示代碼中,具體傳入的為:SPISettings(6400000, MSBFIRST, SPI_MODE0),表示時鐘為6.4MHz對應值,高位優先,操作模式為默認值。
編寫好代碼后,編譯下載,就能運行起來:
打開串口,Ardunio的串口工監視器,就能看到串口輸出的信息,會顯示當前要點亮的燈珠;
把板子翻過來,可以看到背后的LED3在狂閃,因為代碼中設置的delay為100毫秒,1秒得有10次。
再看WS2812B炫彩8*8點陣,燈珠按順序點亮并熄滅。
具體效果,如視頻所示。
如在前兩篇分享的控制WS2812B的文章中所說,你可以根據自己的需要,讓這塊WS2812B炫彩8*8點陣呈現出更復雜的效果,行動起來吧!
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
晶心科技
+關注
關注
0文章
122瀏覽量
19120 -
開發板試用
+關注
關注
3文章
303瀏覽量
2730
發布評論請先 登錄
相關推薦
熱點推薦
在 VisionFive 2 上使用的彩色光環
:pass發送WS2812B的控制信號需要特定的結構化數據,了解其原理后,我們可以自己組裝。在上面的代碼中,py-新像素-spidev使用擴展庫,通過電路板的SPI接口輸出控制信號
發表于 03-05 07:32
有獎丨米爾全志 T153 MINI開發板免費試用來啦
米爾與全志合作發布的新品基于全志T153應用處理器的MYD-YT153MX-MINI開發板免費試用名額來啦~~米爾提供了3套價值399元的MYD-YT153MX-MINI開發板發起
ESP32-C5迷你開發板上手指南!輕松驅動SPI屏幕!
本文將帶你一步步完成WT9932C5-TINY開發板的燒錄與SPI屏幕驅動,從硬件連接到軟件燒錄,直至最終的效果演示。無需復雜的前期準備,跟著教程操作即可快速上手。硬件連接1準備材料
XINGLIGHT成興光- 推出幻彩新品,迎合幻彩領域照明應用新趨勢爆發!
成興光深耕LED領域12年,基于技術沉淀與市場洞察,推出WS2812B幻彩系列和SK6812B幻彩系列產品,既精準響應行業趨勢,更直擊市場痛點,以真實可靠的性能數據和全場景適配能力,成
【瑞薩RA6E2地奇星開發板試用】點亮 WS2812 全彩點陣屏
= R_SPI_Write(&g_spi0_ctrl, &dat, 1, SPI_BIT_WIDTH_8_BITS);
WS28
發表于 12-27 03:28
Renesas FPB - RA2T1快速原型開發板:開啟高效設計之旅
Renesas FPB - RA2T1快速原型開發板:開啟高效設計之旅 在電子設計領域,一款優秀的快速原型開發板能極大地提升開發效率,為項目的成功奠定基礎。Renesas的FPB -
【瑞薩RA6E2】點亮 WS2812 全彩點陣屏
= R_SPI_Write(&g_spi0_ctrl, &dat, 1, SPI_BIT_WIDTH_8_BITS);
WS28
發表于 11-05 08:36
如何用Arduino Nano/UNO R3開發板給另一個Arduino IDE不能下載的Arduino Nano/UNO R3開發板重新燒錄引導程序bootlaoder
本文介紹了如何用能夠Arduino IDE下載的Arduino Nano/UNO R3開發板給另一個Arduino IDE不能下載的Arduino
【RA4L1-SENSOR】點亮 WS2812 全彩點陣屏
= R_SPI_Write(&g_spi0_ctrl, &dat, 1, SPI_BIT_WIDTH_8_BITS);
WS28
發表于 06-09 12:48
基于RK處理器,創龍TL3562-MiniEVM開發板試用體驗
數量: 10塊 ? 更多熱點文章閱讀 基于平頭哥TH1520芯片,潤開鴻HH-SCDAYU800A開發板免費試用 RISC-V開發板深度評測!頂級開發板免費
性能強悍!合眾HZ-RK3568開發板試用體驗
月19日 ? 評測數量: 10塊 ? 更多熱點文章閱讀 基于平頭哥TH1520芯片,潤開鴻HH-SCDAYU800A開發板免費試用 RISC-V開發板深度評測!頂級開發板免費
【RA-Eco-RA4M2開發板評測】點亮WS2812點陣屏
= R_SPI_Write(&g_spi0_ctrl, &dat, 1, SPI_BIT_WIDTH_8_BITS);
WS28
發表于 05-07 15:28
WS2812B on S32K144始終閃爍白色,即使沒有數據也是如此,為什么?
我正在嘗試控制WS2812B RGB LED使用型號 S32K144EVB-Q100.我的目標是發送GRB 數據使用 bit-banging onPTD0.但是,LED 始終閃爍白色 (R=255
發表于 04-08 07:15
【晶心科技ADP-Corvette-T1開發板試用體驗】使用Arduino的SPI庫,直接驅動WS2812B炫彩點陣板
?
評論