本文來源電子發(fā)燒友社區(qū),作者:HonestQiao, 帖子地址:https://bbs.elecfans.com/jishu_2287848_1_1.html
效果演示(開發(fā)板體驗(yàn)視頻,詳見作者原帖子文章)
說干就干,先在Adafruit NeoPixel 擴(kuò)展庫的Arduino開發(fā)環(huán)境中,安裝Adafruit NeoPixel 擴(kuò)展庫,方法如下:
安裝完成后,開發(fā)板選擇ADP-Corvette-T1,然后點(diǎn)擊編譯。
沒想到,杯具的事情發(fā)生了,錯誤提示:Adafruit NeoPixel 擴(kuò)展庫不支持該開發(fā)板。
不甘心,這么通用的WS2812B,一定要辦法驅(qū)動起來。
仔細(xì)看了 ADP-Corvette-T1 的官方資料,了解到如下信息:
在開發(fā)板上,提供了SPI數(shù)據(jù)傳輸接口,而WS2812B真是使用SPI來驅(qū)動的。
詳細(xì)查看板子的定義:
IO11可復(fù)用為SPI/MOSI,剛好可以用作WS2812B的數(shù)據(jù)控制。
參考開頭提供的文章,最終具體的連線如下:
具體的實(shí)物連線如下:
直接使用SPI底層設(shè)備來驅(qū)動,需要使用到Arduino官方的SPI庫,其官方網(wǎng)址為:SPI - Arduino Reference
而在此之前,我還分享過另外一篇控制WS2812B的文章:Debian-StarFive下的SPI驅(qū)動WS2812B炫彩燈珠,在該篇文章中,就詳細(xì)的說明了,想要控制,應(yīng)該如何發(fā)送數(shù)據(jù)。
在上面的這篇分享中,控制的是單顆LED燈珠。在ADP-Corvette-T1開發(fā)板上,這次我們要控制8*8點(diǎn)陣共64顆LED燈珠。
通過對Arduino官方的SPI庫資料的學(xué)習(xí),最終完成了演示代碼,實(shí)現(xiàn)了流水燈的效果。
在該演示代碼中,同時包括:
1. 串口調(diào)試輸出
2. 板載LED控制
3. SPI控制WS2812B
具體代碼文件:
代碼展示:
上述代碼的具體說明:
1. 全局定義:
1). 使用SPI.h,確定使用SPI庫
2). 定義燈珠、引腳信息
3). 定義要發(fā)送的數(shù)據(jù)信息;關(guān)于其具體的定義,可以查看Debian-StarFive下的SPI驅(qū)動WS2812B炫彩燈珠
4). 定義當(dāng)前要點(diǎn)亮的燈珠
5. 定義lgiht_n函數(shù),表示通過SPI發(fā)送控制數(shù)據(jù),當(dāng)前燈珠發(fā)送點(diǎn)亮數(shù)據(jù),其他的發(fā)送熄滅數(shù)據(jù);具體顏色,根據(jù)i值取余取前面定義的顏色。
2. 啟動設(shè)置部分:setup()
1). 設(shè)置串口速度
2). 設(shè)置D13為輸出,用于控制板載的LED3(在板子背面)
3). 定義SPI的傳送參數(shù);具體的參數(shù)說明,后面詳細(xì)的說。
3. 循環(huán)部分:loop()
1). 串口輸出當(dāng)前要點(diǎn)亮的LED燈珠
2). 根據(jù)當(dāng)前要點(diǎn)亮的燈珠序號取2的余,來亮滅LED3
3). 點(diǎn)亮指定的LED燈珠
4). 延時
5). 指向下一刻燈珠;如果達(dá)到最大,則從頭開始。
在上面的代碼中,SPI參數(shù)設(shè)置部分,尤為重要。
要設(shè)置SPI參數(shù),有兩種辦法:
1). SPI.setClockDivider():相對于系統(tǒng)時鐘設(shè)置SPI時鐘分頻器。
關(guān)于分頻器的基本知識,我在定時器使用基礎(chǔ):使用系統(tǒng)時基定時器和基本定時器閃爍LED分享中,有講過。
因?yàn)?ADP-Corvette-T1開發(fā)板 的最高頻率為 96MHz,我們找一個接近 6.4MHz的分頻。
分頻器可以使用的系統(tǒng)定義為:
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。
在該方式下,其他的參數(shù)使用默認(rèn)值即可。
2). SPI.beginTransaction()
通過傳入SPISettings()獲取的定義參數(shù)來初始化SPI設(shè)備;
SPISettings()具體定義為:SPISettings(speedMaximum,dataOrder,dataMode)
其中:
speedMaximum:表示時鐘
dataOrder:表示數(shù)據(jù)發(fā)送優(yōu)先順序,MSBFIRST表示高位優(yōu)先,LSBFIRST表示低位優(yōu)先。
dataMode:表示SPI的四種操作模式:
2.1) 模式0:默認(rèn)值,時鐘通常為低電平(CPOL = 0),數(shù)據(jù)在從低電平到高電平(前沿)(CPHA = 0)的轉(zhuǎn)換時采樣。
2.2)模式1:時鐘通常為低電平(CPOL = 0),數(shù)據(jù)在從高電平到低電平(后沿)(CPHA = 1)的轉(zhuǎn)換時采樣。
2.3)模式2:時鐘通常為高電平(CPOL = 1),數(shù)據(jù)在從高電平到低電平(前沿)(CPHA = 0)的轉(zhuǎn)換時采樣。
2.4)模式3:時鐘通常為高電平(CPOL = 1),數(shù)據(jù)在從低電平到高電平(后沿)(CPHA = 1)的轉(zhuǎn)換時采樣。
演示代碼中,具體傳入的為:SPISettings(6400000, MSBFIRST, SPI_MODE0),表示時鐘為6.4MHz對應(yīng)值,高位優(yōu)先,操作模式為默認(rèn)值。
編寫好代碼后,編譯下載,就能運(yùn)行起來:
打開串口,Ardunio的串口工監(jiān)視器,就能看到串口輸出的信息,會顯示當(dāng)前要點(diǎn)亮的燈珠;
把板子翻過來,可以看到背后的LED3在狂閃,因?yàn)榇a中設(shè)置的delay為100毫秒,1秒得有10次。
再看WS2812B炫彩8*8點(diǎn)陣,燈珠按順序點(diǎn)亮并熄滅。
具體效果,如視頻所示。
如在前兩篇分享的控制WS2812B的文章中所說,你可以根據(jù)自己的需要,讓這塊WS2812B炫彩8*8點(diǎn)陣呈現(xiàn)出更復(fù)雜的效果,行動起來吧!
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
晶心科技
+關(guān)注
關(guān)注
0文章
101瀏覽量
18166 -
開發(fā)板試用
+關(guān)注
關(guān)注
3文章
301瀏覽量
2092
發(fā)布評論請先 登錄
相關(guān)推薦
【敏矽微ME32G070開發(fā)板免費(fèi)體驗(yàn)】開箱及環(huán)境搭建
,出廠設(shè)置驅(qū)動了WS2812 RGB彩燈,顯示很是炫酷。焊接好兩旁的排針好后,閃燈效果見頂部視頻。
三、環(huán)境搭建
使用Keil開發(fā)評測該開發(fā)板
發(fā)表于 12-17 22:13
如何用OpenCV進(jìn)行手勢識別--基于米爾全志T527開發(fā)板
本文將介紹基于米爾電子MYD-LT527開發(fā)板(米爾基于全志T527開發(fā)板)的OpenCV手勢識別方案測試。摘自優(yōu)秀創(chuàng)作者-小火苗米爾基于全志T527
FacenetPytorch人臉識別方案--基于米爾全志T527開發(fā)板
本篇測評由電子工程世界的優(yōu)秀測評者“小火苗”提供。本文將介紹基于米爾電子MYD-LT527開發(fā)板(米爾基于全志T527開發(fā)板)的FacenetPytorch人臉識別方案測試。一
基于瑞薩FPB-RA4E2智能床頭燈項(xiàng)目——1編譯環(huán)境搭建與點(diǎn)亮驅(qū)動ws2812全彩LED
(FSP_SUCCESS== err);
sci_spi_extended_cfg_tsci_spi_extended_cfg_t1;
WS2812B
發(fā)表于 11-22 21:34
追加名額丨米爾瑞芯微RK3576開發(fā)板有獎試用
米爾與瑞芯微合作發(fā)布的新品基于瑞芯微RK3576應(yīng)用處理器的MYD-LR3576開發(fā)板免費(fèi)試用活動加碼啦~~米爾追加了2塊價值849元的MYD-LR3576開發(fā)板發(fā)起試用活動您不僅可以
有獎丨米爾 瑞芯微RK3576開發(fā)板免費(fèi)試用
米爾與瑞芯微合作發(fā)布的新品基于瑞芯微RK3576應(yīng)用處理器的MYD-LR3576開發(fā)板免費(fèi)試用活動來啦~~米爾提供了7塊價值849元的MYD-LR3576開發(fā)板發(fā)起試用活動您不僅可以免
Andes晶心科技推出QiLai系統(tǒng)芯片和Voyager開發(fā)板
高效能低功耗32/64位RISC-V處理器核心領(lǐng)導(dǎo)供貨商暨RISC-V國際協(xié)會創(chuàng)始首席會員Andes 晶心科技(TWSE:6533)今日宣布推出QiLai (奇萊)系統(tǒng)芯片(SoC)和Voyager開發(fā)板,以進(jìn)一步加速大規(guī)模RI
在AvaotaA1全志T527開發(fā)板上驅(qū)動WS2812 RGB LCD
在 Avaota SBC 的開發(fā)板中,通常會有幾個 WS2812 RGB LED 燈。例如 Avaota A1 的如下位置:
對于 AvaotaOS,提供了硬件的 LEDC(Light
發(fā)表于 07-22 10:45
【GD32F303紅楓派開發(fā)板使用手冊】第二十講 SPI-SPI NAND FLASH讀寫實(shí)驗(yàn)
通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容:
?SPI通信協(xié)議,參考19.2.1東方紅開發(fā)板使用手冊
?GD32F303 SPI操作方式,參考19.2.2東方紅開發(fā)板使用手冊
?NAND FLAS
點(diǎn)擊參與米爾NXP i.MX 93開發(fā)板有獎試用
米爾與NXP合作發(fā)布的新品基于NXPi.MX93應(yīng)用處理器的MYD-LMX9X開發(fā)板免費(fèi)試用活動來啦~~米爾提供了3塊價值678元的MYD-LMX9X開發(fā)板發(fā)起試用活動您不僅可以免費(fèi)體
STM32F030 MDA+PWM驅(qū)動ws2812b,起始的50US的低電平是怎么產(chǎn)生?
STM32F030 MDA+PWM 驅(qū)動 ws2812b,起始的50US的低電平怎么產(chǎn)生?
現(xiàn)在dma+pwm,倒是可以產(chǎn)生一個800K hz的驅(qū)動數(shù)據(jù),但是WS2812要求有50US
發(fā)表于 04-12 07:23
移植libmodbus庫到米爾-全志T113-i開發(fā)板
測試開發(fā)板在工業(yè)領(lǐng)域的應(yīng)用,modbus作為工業(yè)領(lǐng)域的一個重要協(xié)議,那好就移植libmodbus庫。
迪文屏控制WS2812氛圍燈
——來自迪文開發(fā)者論壇本期為大家推送迪文開發(fā)者論壇獲獎開源案例——迪文屏控制WS2812氛圍燈。工程師通過COF智能屏的OS核精準(zhǔn)控制WS2812幻彩燈帶每一顆燈珠顏色,實(shí)現(xiàn)
評論