步驟1:接線
大多數(shù)WS2812板帶三線連接器。我卸下了連接器的塑料外殼,然后將電線直接連接到插針上(它們非常合適)。白色是GND,紅色是+ 5V,綠色是數(shù)據(jù)輸入。
大多數(shù)LED燈帶的兩端都有額外的電源線。這些導(dǎo)線通常是裸露的,因此請(qǐng)確保將其隔離(否則可能會(huì)導(dǎo)致其意外短路)。
請(qǐng)注意,LED需要很多功率。如果有30個(gè)LED燈帶,則可以直接從任何PC或USB電源以全亮度運(yùn)行它(它將消耗小于500mA的電流)。大約100個(gè)LED在低亮度下也能正常工作,但是如果您想要更多,最好使用單獨(dú)的電源。對(duì)于長條,建議從兩端供電,對(duì)于長條,建議連接額外的電源線,每個(gè)100-200個(gè)LED。
WS2812串行接收彩色數(shù)據(jù),因此您實(shí)際上可以控制任何數(shù)量的僅具有一個(gè)數(shù)據(jù)引腳的LED。您可以使用任何數(shù)字輸出引腳(不要忘記在代碼中輸入正確的數(shù)字)。
一旦連接了插排,就可以進(jìn)入編碼部分。
步驟2:編碼
該代碼在我的github存儲(chǔ)庫中可用–您可以將代碼下載為單個(gè)文件此處:https://goo.gl/abFfxz
要快速入門,請(qǐng)找到 #define PIN 0 ,并將0替換為與NeoPixel的數(shù)據(jù)輸入連接的引腳數(shù)
您可能還希望調(diào)整其他設(shè)置,如代碼注釋中所述:
#define NUMPIXELS 30 –設(shè)置數(shù)字像素控制
#define RNDPIN 2 –設(shè)置為任何具有模擬輸入的引腳(僅用于初始化隨機(jī)數(shù)生成器一次)
#define BRIGHTNESS 64 –最大LED亮度(1到255)。請(qǐng)注意,高亮度需要很多功率,因此從低值開始
#define FOCUS 65 –色斑的形狀(增加以獲得狹窄的斑點(diǎn),減少以獲得較寬的斑點(diǎn))
#define DELAY 4000 –設(shè)置動(dòng)畫的速度:降低以加快速度,增加以減慢速度(實(shí)際上并不是延遲)
#define DEBUG 0 –設(shè)置為1以顯示FPS速率
使用常規(guī)方法上傳代碼。盡情享受吧!
步驟3:故障排除
如果根本看不到任何東西,請(qǐng)檢查連接,極性和數(shù)據(jù)引腳。
如果某些LED閃爍或卡住–可能是電源問題。嘗試降低 #define BRIGHTNESS 設(shè)置,并確保您具有足夠的功能。
如果您發(fā)現(xiàn)代碼中有任何錯(cuò)誤或想要改進(jìn)–歡迎您!
第4步:如何工作
對(duì)于此項(xiàng)目,我們有三個(gè)“色斑”,它們可以向后跑沿著地帶以不同的速度前進(jìn)。當(dāng)斑點(diǎn)彼此相遇時(shí),紅色,綠色和藍(lán)色的疊加會(huì)產(chǎn)生各種顏色。我們將每個(gè)光斑的位置和速度保持在變量中,我們需要為每個(gè)重繪上的每個(gè)LED重新計(jì)算顏色。雖然我們每秒可以做很多次,但動(dòng)畫看起來會(huì)很平滑。
像素的每個(gè)顏色分量都與 exp(-d * d)成比例,其中 d 是像素與相應(yīng)顏色的光點(diǎn)中心之間的距離。換句話說,像素顏色代表正態(tài)分布(高斯分布),與在圖形編輯器中使用“高斯模糊”濾鏡完全相同。
Arduino庫中包含的指數(shù)函數(shù)看起來非常慢,因此我僅使用兩個(gè)乘法和一個(gè)除法進(jìn)行了近似: 1.0/(1.0-(0.634-1.344 * x)* x)。請(qǐng)注意,此近似值僅適用于 x 《0 。
我們計(jì)算循環(huán)中每個(gè)像素的顏色,并通過調(diào)用 strip.setPixelColor將其發(fā)送到內(nèi)存緩沖區(qū)。 ()即可。當(dāng)我們遍歷每個(gè)像素時(shí),我們調(diào)用 strip.show(),NeoPixel庫將所有數(shù)據(jù)同步發(fā)送到指定的引腳-所有像素,一個(gè)像素一個(gè)像素,一個(gè)24位彩色數(shù)據(jù)。 First NeoPixel讀取前24位數(shù)據(jù),將其本地存儲(chǔ)在寄存器中,然后將所有其他數(shù)據(jù)傳遞到下一個(gè)像素。第二個(gè)“像素”獲取其數(shù)據(jù),并將剩余的數(shù)據(jù)發(fā)送到下一個(gè)像素,依此類推,直到每個(gè)像素獲取其數(shù)據(jù)。您可以安全地發(fā)送少于條帶中的LED數(shù)量的數(shù)據(jù)-只有第一個(gè) NUMPIXELS 才可以工作。
該代碼已被詳細(xì)記錄(希望!),請(qǐng)?jiān)儐枂栴}在這里!
第5步:調(diào)整
當(dāng)然,有很多方法可以修改此想法并創(chuàng)建其他項(xiàng)目。
例如,我為我的一個(gè)項(xiàng)目制作了一個(gè)金屬環(huán),并將其中的一條膠粘到其中?,F(xiàn)在,這是一個(gè)不錯(cuò)的裝飾燈,您可以將其放在墻壁或天花板上。在窗玻璃附近放置一個(gè)條帶可以產(chǎn)生很好的反射效果(如您在照片上看到的那樣)。
在技術(shù)方面,通過在定點(diǎn)計(jì)算中重寫數(shù)學(xué)運(yùn)算可以大大改善代碼。我正在使用float來保持事物的描述性和易于理解,但這非常慢。我可能稍后會(huì)發(fā)布優(yōu)化版本,或者,如果有人愿意,歡迎您!
我的另一個(gè)想法是使用麥克風(fēng)調(diào)整動(dòng)畫聲音??赡苄枰華Ttiny更強(qiáng)大的功能。
最后,您可以將Digispark插入任何移動(dòng)電源,并在便攜式模式下欣賞您的小工具。將條帶粘在手提包,衣服或自行車上,并用作獨(dú)特的個(gè)人配件。)
-
LED燈條
+關(guān)注
關(guān)注
2文章
100瀏覽量
13338
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論