概述
本指南適用于ARDUINO和兼容的板卡-Arduino Uno,Mega,Zero和Adafruit Metro 328,Metro M0和M4。我們?yōu)镽aspberry Pi提供了不同的指南。
使用我們的RGB LED矩陣面板將一些時代廣場帶入您的家中。這些面板通常用于制作視頻墻(在紐約,我們在公共汽車的側(cè)面和公共汽車站上看到它們)來顯示動畫或簡短的視頻剪輯。我們以為他們看起來真的很酷,所以我們從工廠拿了幾盒。一個具有512個明亮的RGB LED,它們以16x32網(wǎng)格的形式排列在正面,另一個具有1024個LED的32x32網(wǎng)格。背面是帶有IDC連接器的PCB(一組用于輸入,一個用于輸出:理論上您可以將它們鏈接在一起)和12個16位鎖存器,它們允許您以1:8(16x32)或1來驅(qū)動顯示器。 :16(32x32)掃描速度。
這些面板需要12個或13個數(shù)字引腳(6位數(shù)據(jù),6或7位控制)和一個良好的5V電源,至少一個耦合放大器面板。我們建議使用2A(或更大規(guī)格)穩(wěn)壓5V適配器和接線盒DC插孔,或通過DC延長線焊接插孔。請閱讀本教程的其余部分以獲取更多詳細信息!
請記住,這些顯示器通常設(shè)計為由FPGA或其他高速處理器驅(qū)動;它們沒有任何內(nèi)置的PWM控制。相反,您應(yīng)該一遍又一遍地重新繪制屏幕,以“手動” PWM整個過程。在16 MHz的Arduino Uno上,我們設(shè)法壓縮了12位顏色(4096種顏色),但是如果由FPGA,CPLD,Propeller,XMOS或其他高速多處理器控制器驅(qū)動,則該顯示確實會發(fā)光。
當(dāng)然,我們不會給您留下數(shù)據(jù)表和“好運!”我們有完整的接線圖和有效的Arduino庫代碼,并提供繪制像素,線條,矩形,圓形和文本的示例。您將在一個小時內(nèi)獲得色彩爆破!在Arduino Uno或Mega上,您需要12個數(shù)字引腳和大約800字節(jié)的RAM來保存12位彩色圖像(是32x32矩陣的兩倍)。
該庫可用于有限數(shù)量的開發(fā)板:Arduino Uno,Mega,Zero,Adafruit Metro M0和Metro M4。不支持其他板(例如Arduino Leonardo)。
功率
盡管LED是非常高效的光源,但只要將它們集中在一處,電流就可以累積起來。
A 單個 32x16 或 32x32 RGB矩陣,全傾斜(所有像素設(shè)置為白色),可能需要近 4安培 當(dāng)前!將這個數(shù)字翻倍以形成 64x32 矩陣。
在平均值上,顯示典型的圖形和動畫時,這些面板將使用更少的。.. 2A 電源通常對于單個32x16或32x32面板就足夠了,對于64x32面板則是4A。使用額定功率更大的 Amps (例如10A電源)的大功率電源沒有什么害處,但是從不不要使用具有更高 Voltage 電壓的電源(使用 5V,周期)!
在這些面板上,電源連接與數(shù)據(jù)連接是分開的。讓我們從連接5V電源開始……
我們的零件供應(yīng)商有時會修改設(shè)計。結(jié)果,連接隨時間變化。我們將在這里介紹不同的接線組合…選擇與您收到的面板匹配的說明。
出現(xiàn)了兩種不同類型的電源連接器:
左側(cè)是一個螺絲柱電源連接器(帶有相鄰的焊墊直接焊接)。右邊是Molex樣式的標(biāo)頭。某些面板將具有兩個接頭連接器…這些面板附帶的電源線具有兩個接頭連接器的連接器。
使用接線柱和墊板連接器,您可以擰緊電源電纜的黑桃,或者另一種方法是從該延長線上切下一個2.1mm的插孔,然后將其焊接到面板背面的焊盤上。這樣,您可以直接從墻上適配器插入5V電壓(建議在商店中購買)。只需將電纜的另一半切斷,然后剝?nèi)ゲ季€,以便可以將紅色導(dǎo)線焊接至+5,黑色導(dǎo)線接地。
將兩個引腳正確焊接到電源端口。確保正確無誤,因為沒有保護二極管!
如果您的面板具有Molex式接頭,則只需插入隨附的電源線,并注意正確的極性即可。
如果電源線的另一端帶有鐵鍬使用此電源線,可以將其擰入2.1mm接線盒適配器中。很好用!但是,不要讓裸露的連接器接觸金屬……您應(yīng)該用熱縮管或電工膠帶將其覆蓋。
您可能會獲得權(quán)力具有不同末端的電纜,例如圓形,而不是鍬形的末端,或者可以使用另一個Molex連接器。只需將電纜和電線直接剝?nèi)ル娫床孱^
連接
這些面板通常設(shè)計用于鏈接(將端到端鏈接到更大的顯示器中)…一個面板的輸出連接到
由于Arduino中的RAM有限,鏈接很少是可行的。盡管如此,還是有必要在面板上區(qū)分輸入和輸出連接…如果我們連接到錯誤的插座,它將不會響應(yīng)。
盡管面板支持鏈接,但這在Arduino級板上非常不切實際,并且我們的庫不支持它。像Raspberry Pi這樣功能更強大的系統(tǒng)可能是鏈接面板的更好選擇!
將矩陣翻轉(zhuǎn)過來,這樣您就可以看到背面,用兩個插座位于左右邊緣(不是頂部和底部)。
在某些面板上,如果幸運的話,這些插座會標(biāo)有INPUT和OUTPUT(有時是IN和OUT或
如果未標(biāo)記INPUT,則查找一個或多個指向水平方向的箭頭(忽略任何垂直箭頭,無論向上還是向下)。下)。水平箭頭顯示數(shù)據(jù)從輸入到輸出的方向-然后您知道哪個連接器。
如果沒有這樣的標(biāo)簽,最后的選擇是檢查連接器引腳周圍的塑料導(dǎo)流罩。 INPUT連接器上的鍵(凹口)將面對面板的外邊緣(而不是中心)。
INPUT連接器上的插針排列隨矩陣大小和生產(chǎn)批次的不同而不同……
32x16 面板使用此引腳排列。標(biāo)簽可能略有不同,或者根本沒有標(biāo)記引腳。但是在任何一種情況下,請使用該圖像作為參考。
注意,有四個接地點。為了確保可靠的性能, 所有四個都應(yīng)在Arduino上連接到GND !無焊面包板便于進行這種分割。
這是 32x32 和 64x32 面板的布局。我們將其稱為“ 變體A ”。某些面板使用不同的標(biāo)簽,但功能相同。
布局與32x16面板,用“ D”代替一根接地線。
這是我們最常使用的布局。
如果您的32x32面板根本沒有沒有引腳標(biāo)簽,然后使用此布局。
“ 變體B ” 32x32 和 64x32 面板。接線與上述變體A 相同,僅標(biāo)簽不同
接地針沒有標(biāo)簽,但仍需要連接。
LAT(閂鎖) )在此處標(biāo)記為STB(頻閃)。 R1/G1/B1/R2/G2/B2更改為R0/G0/B0/R1/G1/B1…但同樣,沒有功能差異,只是墨水。
我們最早的 32x32 面板有兩個-socket 設(shè)計,我們將其稱為“ Variant C ”。雖然引腳功能相同,但布局卻大不相同。
上插槽上的》 R/G/B對應(yīng)于變體A中的R1/G1/B1。下插槽上的R/G/B對應(yīng)于R2/G2/B2。
所有其他信號(A/B/C/D/CLK/LAT/OE)都需要連接到兩個插座-例如
連接到Arduino
有兩種或三種方法將矩陣連接到Arduino:
跳線插入Arduino接頭和帶狀電纜之間-可以很好地用于測試和原型制作,但不耐用。
Adafruit RGB Matrix Shield strong》使這些面板與Arduino的連接盡可能容易,并且最適合永久安裝。
一個人可以構(gòu)建一個 原型屏蔽 復(fù)制選項#2的引腳排列。但是,鑒于Matrix Shield的低成本,這可能不值得如今付出。
這些面板通常由非常快的處理器或FPGA(而不是16 MHz的Arduino)運行,以實現(xiàn)合理的性能。在這種有限的環(huán)境中,我們通過將特定信號綁定到特定Arduino引腳來優(yōu)化我們的軟件。可以重新配置很少的控制線,但是其他控制線卻非常具體。.. 您不能隨意地進行整條接線。下一頁演示了兼容的接線。..一種使用RGB矩陣盾,使用跳線。
使用RGB矩陣屏蔽進行連接
這是將這些矩陣與Arduino尺寸的板配對的首選方法,因為它既快速又麻煩,
Adafruit RGB Matrix Shield 可與 Arduino Uno 和兼容基于ATmega328的板一起使用,例如 Adafruit Metro 。它也可以直接與Adafruit Metro M0 一起使用…并且可以與一根或多根跳線一起與 Metro M4 (以及可能具有此外形規(guī)格的其他主板,如果兼容)一起使用可以使用Arduino庫。)
屏蔽板不能與Arduino Mega一起使用-請參閱“跳線”頁面上的引腳排列,或考慮進行制作
防護罩沒有裝滿,您需要做一些焊接才能得到
排針從下面安裝,并焊接在頂部。三個組件-按鈕,電源端子和16針接頭連接器-從頂部插入并焊接在下面。
必須以正確的方向安裝16針(8x2)接頭連接器!絲印上會顯示極性槽口,或者您可以在上面的照片中看到,該槽口面向數(shù)字I/O引腳。如果將其反向安裝,矩陣將無法工作!
LED矩陣的電源可以連接到屏蔽層的螺釘端子—紅色線連接到+ 5Vout,黑色線連接到GND —然后以安全且穩(wěn)定的5伏電壓從Arduino的DC插孔或USB電纜為整個電路供電。
Metro M4用法
盾牌需要做一些小改動才能與Adafruit Metro M4 一起使用:
使用
用一根小銼刀或業(yè)余刀切開此處所示的兩個焊盤之間的PCB跡線。
從相鄰的“ CLK”引腳到“ Analog In 4”引腳焊接導(dǎo)線。
需要在自己的代碼中進行相應(yīng)的更改-在“代碼”中查找“ CLK”引腳定義任何矩陣示例……
下載:文件
復(fù)制代碼
#define CLK 8 #define CLK 8
并將“ 8”更改為“ A4”:
下載:文件
復(fù)制代碼
#define CLK A4 #define CLK A4
連接跳線
帶狀電纜及其相應(yīng)的插頭有時是拓撲難題。這是一個有助于跟蹤的竅門。..
如果將帶狀電纜保持平坦(沒有折疊),并且兩個連接器都朝向您,則鍵指向相同的方向,那么引腳之間的比例為1:1 。一個插頭上的右上引腳連接到另一個插頭上的右上引腳,依此類推,即使電纜的應(yīng)力消除倍增也是如此。 只要鍵指向相同的方向并且插頭面對的方向相同,銷釘?shù)膬啥硕嘉挥谙嗤奈恢谩?/p>
插入到LED矩陣上的插槽中,一個頭現(xiàn)在面向離開。如果您將電纜本身加倍(不是絞線,而是折線)…以訪問插座上的特定插針,則左右列將被鏡像(行的順序相同-紅色條紋提供了一個點)參考)。您是在插頭上看“上”,而不是在插座上看。“
例如,R1(INPUT插座上的左上引腳)出現(xiàn)在右上角。 的裸露插頭。您可以將跳線卡在該孔中,并將其卡到Arduino上的相應(yīng)引腳上。
好!在上一頁中,請參閱適合您矩陣類型的插座。標(biāo)簽可能有所不同(或根本沒有標(biāo)簽),但大多數(shù)標(biāo)簽都與此處顯示的標(biāo)簽非常接近。
然后交換列找到給定信號的正確位置。
帶狀電纜的兩端都可以插入矩陣請注意,無論如何,“鍵”都面對相同的方向。
通過將色帶的自由端朝向矩陣中心,可以將Arduino隱藏在它的后面。
將色帶的自由端放在一邊,可以更容易地同時看到矩陣的正面和Arduino,以進行更多連接或進行故障排除。
使用彩色編碼導(dǎo)線有助于很多!如果您沒有彩色電線,那也可以,請密切注意一切進展。我們的目標(biāo)是這樣的一個完全填充的插件:
所以!讓我們按組進行布線。..
連接地線
32x32 和 64x32 矩陣需要三個接地。 32x16 矩陣具有 4 。
當(dāng)前 Arduino Uno ,類似的板具有三個接地引腳(第三個位于引腳13旁邊)。如果您需要其他接地連接(用于32x16矩陣,或者使用僅帶2個接地引腳的舊版Arduino板),則可以使用無焊面包板來連接所有這些引腳。
Arduino Mega 板具有五個接地引腳。與Arduino Uno相同的三個,在引腳52和53旁邊另外兩個。
上RGB數(shù)據(jù)
固定 R1 , G1 和 B1 (在某些矩陣上標(biāo)記為R0,B0和G0)將數(shù)據(jù)傳送到顯示屏的上半部。
在 Arduino Uno 和 Adafruit Metro(328)上,M0 或 M4)板,將它們連接到數(shù)字引腳 2 , 3 和 4 。
在 Arduino Mega 上,連接到引腳 24 , 25 和 26 。
降低RGB數(shù)據(jù)
將 R2 , G2 和 B2 (在某些矩陣上標(biāo)記為R1,G1和B1)固定數(shù)據(jù)保存到顯示屏的下半部。這些連接到接下來的三個Arduino引腳…
在 Arduino Uno 和 Adafruit Metros 上,這些引腳 5 , 6 和 7 。
在 Arduino Mega 上,固定 27 , 28 和 29 。
行選擇行
將 A , B , C 和 D 固定在顯示屏的哪兩行當(dāng)前點亮。 ( 32x16矩陣沒有“ D”引腳,而是連接到接地。)
這些連接固定至 A0 , A1 , A2 和(如果存在D引腳) A3 。這是所有板的相同。
LAT線
The LAT 信號連接到Arduino引腳 10 。
所有板子都相同。
LAT(閂鎖)信號標(biāo)志著結(jié)束一排數(shù)據(jù)。
OE線
OE 連接到Arduino引腳 9 。對于所有電路板都是相同的。
OE(輸出使能)在從一行轉(zhuǎn)換到另一行時會關(guān)閉LED。
CLK線
最后一個!/p》
CLK 連接到…Arduino Uno , Adafruit Metro 328 或 Metro M0 上的p》
Pin 8 。/li》
Pin 11 在 Arduino Mega 上。
Pin A4 在 Adafruit Metro M4 (未顯示,但您知道了)。
CLK(時鐘)信號標(biāo)記數(shù)據(jù)的每一位到達。
就是這樣。您現(xiàn)在可以跳到“測試示例代碼”頁面。
使用Proto Shield進行連接
如“跳線”頁面所述:如果將扁平電纜平放-不能折疊-并且兩個連接器都朝向您,則鍵指向方向相同-引腳之間存在1:1的相關(guān)性。一個插頭上的右上引腳連接到另一個插頭上的右上引腳,依此類推,即使電纜的應(yīng)力消除倍增也是如此。 只要鍵指向相同的方向并且插頭面對的方向相同,銷釘?shù)膬啥硕嘉挥谙嗤奈恢谩?/p>
帶狀電纜的任一端都可以插入矩陣INPUT中
功能區(qū)的自由端可以指向矩陣的中心,也可以懸垂在側(cè)面上……引腳排列仍然相同。請注意,下面的“鍵”的方向沒有改變。
將雙排接頭安裝在原型屏蔽上,類似于矩陣上的連接器。就像帶狀電纜平放一樣,只要這兩個接頭是以相同的方式對齊,它們將逐個匹配;與上一頁中的跳線方法不同,不會發(fā)生鏡像。
然后將導(dǎo)線從插頭焊接到原型屏蔽板上的特定Arduino引腳上。盡量保持較短的電線長度以避免信號干擾。
使用顏色編碼的電線有助于很多!如果您沒有彩色電線,那沒關(guān)系,只需付款注意一切進展。我們的目標(biāo)是原型防護,例如:
如果您不愿意,不需要在原型屏蔽板上安裝所有按鈕和指示燈,只需基本的插頭即可。
對于 Arduino Uno 及其類似,使用 Adafruit 原型屏蔽:如果使用帶屏蔽的插座(例如在矩陣的背面—帶有凹口,因此帶狀電纜僅適合一種方式)您需要將其放置在屏蔽的“重置”端附近。塑料導(dǎo)流罩遮蓋了許多針腳。 其他人的原型防護罩可能布置不同 。..在進行焊接之前,先四處尋找合適的位置。
對于 Arduino Mega ,我們提供相應(yīng)的原型防護罩:帶屏蔽的插座最適合屏蔽的中間。
否則,您可以使用普通的2x8針公頭或兩個1x8部分 》并排安裝(如上圖所示)。由于此設(shè)置沒有對齊鍵,因此您可能想用一些膠帶或永久標(biāo)記來指示它。
根據(jù)原型屏蔽的制造商和型號,某些引腳被設(shè)計為短排連接。其他人沒有。對于后者,剝?nèi)ヒ稽c額外的絕緣層,然后彎曲電線以從后面纏住插座的支腳,然后進行焊接。
連接接地線
32x32 和 64x32 矩陣需要 3 接地。 32x16 矩陣有 4 。
大多數(shù)原始屏蔽層的接地點有 ton ,因此您
上RGB數(shù)據(jù)
固定 R1 , G1 和 B1 (標(biāo)記為R0,B0和某些矩陣上的G0)將數(shù)據(jù)傳送到顯示屏的上半部。
在 Arduino Uno 和 Adafruit Metro(328,M0 或 M4)板,將這些板連接到數(shù)字引腳 2 , 3 和 4 。。 p》
在 Arduino Mega 上,連接到引腳 24 , 25 和 26 。
降低RGB數(shù)據(jù)
引腳 R2 , G2 和 B2 (在某些矩陣上標(biāo)記為R1,G1和B1)將數(shù)據(jù)傳送到下半部顯示。這些連接到接下來的三個Arduino引腳…
在 Arduino Uno 和 Adafruit Metros 上,這是引腳 5 , 6 和 7 。
在 Arduino Mega 上,引腳 27 , 28 和 29 。
行選擇行
別針 A , B , C 和 D 選擇當(dāng)前顯示屏的哪兩行亮。 ( 32x16矩陣沒有“ D”引腳-而是連接到接地。)
這些連接固定至 A0 , A1 , A2 和(如果存在D引腳) A3 。這是 Arduino Uno 和 Mega 的相同。
LAT Wire
對于 32x32 和 64x32 矩陣, LAT 連接到Arduino引腳 10 。
對于所有開發(fā)板都是相同的。
LAT(閂鎖)信號標(biāo)記一行數(shù)據(jù)的結(jié)尾。
span》
OE線
OE 連接到Arduino引腳 9 。對于所有電路板都是相同的。
OE(輸出使能)在從一行轉(zhuǎn)換到另一行時會關(guān)閉LED。
CLK線
最后一個!/p》
CLK 連接到。..
Pin 8 在 Arduino Uno , Adafruit Metro 328 或 Metro M0 。
Pin A4 在 Adafruit Metro M4 上。
Pin 11 在 Arduino Mega 上。
CLK(時鐘)信號標(biāo)記數(shù)據(jù)的每一位的到達。
這又是一張完整的盾牌的照片。您可以說這是針對32x16矩陣的,因為有四個接地連接(長的垂直條之一是接地總線-看到那里的微小跳線嗎?)。
到矩陣的帶狀電纜會
顏色和位置與上面的示例不太匹配,但是很接近。 G1和G2是黃色導(dǎo)線。 LAT是紫色導(dǎo)線,現(xiàn)在應(yīng)該轉(zhuǎn)到引腳10(我們在Arduino庫中進行了一些更改)。
測試示例代碼
我們已經(jīng)準(zhǔn)備好了示例代碼供這些顯示使用。它與Arduino Uno或Mega兼容。..但是 不 其他板卡,例如Leonardo,也不是“類似Arduino的”板卡,例如Netduino 。..可能對專家進行編程 可以通過改編C ++源代碼將其移植到其他微控制器,但是按照書面形式,它可以做一些非常底層的,不可移植的事情。
該庫可用于有限數(shù)量的開發(fā)板:Arduino Uno,Mega,Zero,Adafruit Metro M0和Metro M4。不支持其他開發(fā)板(例如Arduino Leonardo)。
兩個庫需要下載并安裝:第一個是RGB矩陣面板庫(包含特定于該設(shè)備的低級代碼),其次是Adafruit GFX庫(用于處理許多我們攜帶的顯示器通用的圖形操作)。
都可以使用Arduino Library Manager( Sketch→Include Library→Manage Libraries…)找到并安裝這兩個庫。搜索“ gfx”和“ rgb矩陣面板”并安裝相應(yīng)的Adafruit庫。
現(xiàn)在您可以進行測試了!打開IDE并加載文件→示例→RGBmatrixPanel→testcolors_16x32 (對于16x32面板)或文件→示例→RGBmatrixPanel→colorwheel_32x32 (對于32x32面板)。 》 如果使用Arduino Mega 2560,除了前面提到的接線更改外,您還需要對每個示例草圖進行少量更改。這行:
下載:文件
復(fù)制代碼
#define CLK 8 // MUST be on PORTB! (Use pin 11 on Mega) #define CLK 8 // MUST be on PORTB! (Use pin 11 on Mega)
應(yīng)更改為:
下載:文件
復(fù)制代碼
#define CLK 11 #define CLK 11
(任何數(shù)字引腳10-13和50-53可以在Mega上用于此功能,并進行相應(yīng)的接線更改。示例全部參考引腳11。)
如果使用 Adafruit Metro M4 (不是 M0或328),則CLK更改將是:
下載:文件
復(fù)制代碼
#define CLK A4 #define CLK A4
上傳后,使用16x32面板您應(yīng)該看到以下內(nèi)容:
這是一個測試圖案,在512像素上顯示512種顏色(4096種顏色)。由于沒有真正優(yōu)雅的方法可以在二維中顯示3維色彩空間(R/G/B),因此只重復(fù)了紅色/綠色和藍色的重復(fù)網(wǎng)格。無論如何,這會向您顯示可以實現(xiàn)的顏色范圍!
,或者使用32x32面板:
現(xiàn)在您可以在這里工作了:
最有用的一行是:
下載:文件
復(fù)制代碼
matrix.drawPixel(x, y, matrix.Color333(r, g, b)); matrix.drawPixel(x, y, matrix.Color333(r, g, b));
,這是我們實際繪制到顯示器上的位置。此代碼一次只繪制一個像素。 x 和 y 坐標(biāo)是顯示器的各個像素。 (0,0)在左上角,(31,15)在右下角(請記住,我們從0開始計數(shù)!)。要創(chuàng)建顏色,您將需要使用輔助功能 Color333 ,該功能將使用三個3位數(shù)字并將它們組合為單個打包的整數(shù)。因此,例如,第一個參數(shù) r 的范圍可以從0到7。對于 g 和 b 同樣。要制作純紅色的像素, r 將為7,而 g,b 則將為0。要制作白色像素,請將所有像素都設(shè)置為7。要制作黑色(關(guān)閉)像素,將顏色設(shè)置為0。類似的功能 Color444 可以接受三個4位數(shù)字,最多可顯示4096種顏色。
現(xiàn)在我們可以打開在下一個示例中,該示例顯示了庫的其余功能。
庫
下一步,加載 testshapes_16x32 或 testshapes_32x32 示例草圖,它將測試所有可用的繪圖元素(同樣,您可以可能需要編輯32x32面板的引腳號。)
您可能想要做的最簡單的事情是繪制一個像素,我們已經(jīng)在上面介紹了這一點。
下載:文件
復(fù)制代碼
// draw a pixel in solid white
matrix.drawPixel(0, 0, matrix.Color333(7, 7, 7)); // draw a pixel in solid white
matrix.drawPixel(0, 0, matrix.Color333(7, 7, 7));
下一個通過繪制一個非常大的矩形將綠色填充屏幕。前兩個參數(shù)是左上角,然后是寬度(以像素為單位)和高度(以像素為單位),最后是顏色
下載:文件
復(fù)制代碼
// fix the screen with green
matrix.fillRect(0, 0, 32, 16, matrix.Color333(0, 7, 0)); // fix the screen with green
matrix.fillRect(0, 0, 32, 16, matrix.Color333(0, 7, 0));
下一步,我們將僅繪制黃色的矩形
下載:文件
復(fù)制代碼
// draw a box in yellow
matrix.drawRect(0, 0, 32, 16, matrix.Color333(7, 7, 0)); // draw a box in yellow
matrix.drawRect(0, 0, 32, 16, matrix.Color333(7, 7, 0));
接下來,您可能要畫線。 drawLine 過程將以您想要的任何顏色繪制一條線,我們用它來繪制一個大的X
下載:文件
復(fù)制代碼
// draw an ‘X’ in red
matrix.drawLine(0, 0, 31, 15, matrix.Color333(7, 0, 0));
matrix.drawLine(31, 0, 0, 15, matrix.Color333(7, 0, 0)); // draw an ‘X’ in red
matrix.drawLine(0, 0, 31, 15, matrix.Color333(7, 0, 0));
matrix.drawLine(31, 0, 0, 15, matrix.Color333(7, 0, 0));
我們繪制的下一個形狀是圓形。您可以使用 drawCircle 繪制圓的輪廓,或使用 fillCircle 填充圓。前兩個參數(shù)是中心點,第三個參數(shù)是半徑(以像素為單位),最后是要使用的顏色。
下載:文件
復(fù)制代碼
// draw a blue circle
matrix.drawCircle(7, 7, 7, matrix.Color333(0, 0, 7));
// fill a violet circle
matrix.fillCircle(23, 7, 7, matrix.Color333(7, 0, 7)); // draw a blue circle
matrix.drawCircle(7, 7, 7, matrix.Color333(0, 0, 7));
// fill a violet circle
matrix.fillCircle(23, 7, 7, matrix.Color333(7, 0, 7));
fillScreen 整個屏幕具有單一顏色:
下載:文件
復(fù)制代碼
// fill the screen with ‘black’
matrix.fillScreen(matrix.Color333(0, 0, 0)); // fill the screen with ‘black’
matrix.fillScreen(matrix.Color333(0, 0, 0));
最后,我們繪制顯示在頂部的文本作為演示圖像。我們可以使用打印功能,您會在序列中熟悉該功能。您可以使用 print 打印字符串,數(shù)字,變量等。但是,我們需要在開始打印之前進行設(shè)置!首先,我們必須使用 setCursor 設(shè)置光標(biāo)位置,第一個字符的左上像素將到達該位置,該位置可以是任何位置,但請注意,默認情況下文本字符的高度為8像素。接下來的 setTextSize 讓您將大小設(shè)置為1(高8像素)或2(對于大文本,高16像素!),您可能現(xiàn)在只想保留1。最后,我們可以使用 setTextColor 設(shè)置文本的顏色。完成所有操作后,我們可以使用 print(‘1’)打印字符“ 1”。
下載:文件
復(fù)制代碼
// draw some text!
matrix.setCursor(1, 0); // start at top left, with one pixel of spacing
matrix.setTextSize(1); // size 1 == 8 pixels high
// print each letter with a rainbow color
matrix.setTextColor(matrix.Color333(7,0,0));
matrix.print(‘1’);
matrix.setTextColor(matrix.Color333(7,4,0));
matrix.print(‘6’);
matrix.setTextColor(matrix.Color333(7,7,0));
matrix.print(‘x’);
matrix.setTextColor(matrix.Color333(4,7,0));
matrix.print(‘3’);
matrix.setTextColor(matrix.Color333(0,7,0));
matrix.print(‘2’);
matrix.setCursor(1, 9); // next line
matrix.setTextColor(matrix.Color333(0,7,7));
matrix.print(‘*’);
matrix.setTextColor(matrix.Color333(0,4,7));
matrix.print(‘R’);
matrix.setTextColor(matrix.Color333(0,0,7));
matrix.print(‘G’);
matrix.setTextColor(matrix.Color333(4,0,7));
matrix.print(“B”);
matrix.setTextColor(matrix.Color333(7,0,4));
matrix.print(“*”); // draw some text!
matrix.setCursor(1, 0); // start at top left, with one pixel of spacing
matrix.setTextSize(1); // size 1 == 8 pixels high
// print each letter with a rainbow color
matrix.setTextColor(matrix.Color333(7,0,0));
matrix.print(‘1’);
matrix.setTextColor(matrix.Color333(7,4,0));
matrix.print(‘6’);
matrix.setTextColor(matrix.Color333(7,7,0));
matrix.print(‘x’);
matrix.setTextColor(matrix.Color333(4,7,0));
matrix.print(‘3’);
matrix.setTextColor(matrix.Color333(0,7,0));
matrix.print(‘2’);
matrix.setCursor(1, 9); // next line
matrix.setTextColor(matrix.Color333(0,7,7));
matrix.print(‘*’);
matrix.setTextColor(matrix.Color333(0,4,7));
matrix.print(‘R’);
matrix.setTextColor(matrix.Color333(0,0,7));
matrix.print(‘G’);
matrix.setTextColor(matrix.Color333(4,0,7));
matrix.print(“B”);
matrix.setTextColor(matrix.Color333(7,0,4));
matrix.print(“*”);
矩陣的工作方式
關(guān)于這些矩陣如何工作的文獻為零,也沒有公開的數(shù)據(jù)表或規(guī)范表,因此我們將嘗試記錄它們的工作方式。
首先要注意的是,在16x32矩陣中有512個RGB LED。就像幾乎每個矩陣一樣,您無法一次驅(qū)動所有512個驅(qū)動器 。一個原因是需要大量電流,另一個原因是擁有這么多的引腳確實很昂貴。取而代之的是,矩陣被分為8個交錯的部分/條。第一部分是第一條“線”和第九條“線”(32 x 2 RGB LED = 64 RGB LED),第二部分是第二條和第十條線,依此類推,直到最后一部分是第七條和第十六條線。您可能會問,為什么將線以這種方式配對?將第一部分放在第一和第二行,然后是第三和第四行,直到第15和16行會更好嗎?之所以這樣做,是為了使線交錯且刷新時看起來更好,否則我們將更清楚地看到條紋。
因此,在PCB上為12 LED驅(qū)動器芯片。這些就像74HC595s,但它們有16個輸出,并且是恒定電流。 16個輸出* 12個芯片= 192個可同時控制的LED,而64 * 3(RG和B)=192。因此,現(xiàn)在將設(shè)計融合在一起:您擁有192個輸出,一次可控制一行,每個輸出192個R,G和B LED點亮或熄滅。控制器(例如FPGA或微控制器)選擇當(dāng)前要繪制的部分(使用A,B和C地址引腳-3位可以有8個值)。設(shè)置地址后,控制器將輸出192位數(shù)據(jù)(24字節(jié))并將其鎖存。然后它增加地址并移出另外192位,依此類推,直到到達地址#7,然后將地址設(shè)置回#0
該技術(shù)的唯一缺點是盡管非常簡單快捷,內(nèi)置了沒有PWM控制!控制器只能僅將LED設(shè)置為打開或關(guān)閉。那么,當(dāng)您想要全彩時該怎么辦?實際上,您需要以很高的速度一遍又一遍地繪制整個矩陣,以手動對矩陣進行PWM。出于這個原因,如果您想做很多顏色和運動視頻并且看起來不錯,則需要一個非常快的控制器(最低50 MHz )。
我們多快可以將數(shù)據(jù)輸入矩陣?論壇用戶Andrew Silverman和Ryan Brown一直在發(fā)布他們使用FPGA驅(qū)動16x32矩陣的進展,極限似乎在40到50 MHz之間。 Ryan寫道:“我尚未驗證100%的像素正確性,但50 MHz似乎對我有用[…] 67 MHz絕對不起作用。”他還提供了這張圖,顯示了相對于時鐘頻率的電流消耗:
上面的圖片是rhb。 me(CC By-NC-SA)
“請注意,隨著時鐘頻率的增加,LED面板的電流消耗會減少。這表明LED的“接通時間”正在減少。我猜這是由LED驅(qū)動器移位寄存器中的頻率不變延遲引起的。”
常見問題解答
我看到奇怪的像素偽像,重影或其他故障。
這可能是由于以下原因之一:
接線
電源
軟件
顯示不良
接線問題可能是顯示問題的最大來源。尤其是在嘗試“跳線”連接方法時。也有電源引起干擾的情況。本指南涵蓋了正確的布線和電源。
如果所有這些看起來都不錯,并且您仍然看到怪異的像素,則可能是由于軟件中如何驅(qū)動像素。您可以嘗試按照指南中的內(nèi)容進行一些調(diào)整,但是問題可能不會完全消失。
如果您嘗試進行故障排除并仍然遇到問題,請在論壇中發(fā)帖我們可以看看。
接線問題示例
接線問題看起來像這樣,如果發(fā)現(xiàn)錯誤/不良的接線,通常可以修復(fù)。
Ghosting問題示例
您將看到大部分期望的內(nèi)容,還有一些其他工件。即使接線正確,也會發(fā)生這種情況。
下載
文件
Adafruit Fritzing庫中的Fritzing對象
GitHub中的EagleCAD PCB文件
示意圖和結(jié)構(gòu)打印
責(zé)任編輯:wv
-
led
+關(guān)注
關(guān)注
242文章
23709瀏覽量
670972 -
RGB
+關(guān)注
關(guān)注
4文章
803瀏覽量
59593
發(fā)布評論請先 登錄
HTR3229 16x8陣列LED驅(qū)動器中文手冊
HMC596 CMOS 4x2開關(guān)矩陣,采用SMT封裝技術(shù)手冊

24CW16X/24CW32X/24CW64X/24CW128X系列數(shù)據(jù)手冊

用am335x芯片把16bit的rgb怎么通過SN65LVDS93A這個芯片轉(zhuǎn)化為lvds接口的?
TLC6984 48×16共陰極矩陣LED顯示驅(qū)動器評估模塊

空調(diào)扇LED驅(qū)動LED驅(qū)動電路芯片VK1629
LP5891 48x16共陰極矩陣LED顯示驅(qū)動器評估模塊

LP5891-Q1 48×16共陰極矩陣LED顯示驅(qū)動器評估模塊

基于LP50xx器件的全彩RGB LED矩陣系統(tǒng)設(shè)計指南

HTR3229 16x8 陣列 LED 驅(qū)動器

UCC25640X在LED照明PSU中的優(yōu)勢

R&S?ZN-Z8x 開關(guān)矩陣

MSP430F15x, MSP430F16x, MSP430F161x混合信號微控制器數(shù)據(jù)表

評論