91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Adafruit NeoPixel的使用指南

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-28 09:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

NeoPixels的魔力

將大量LED集成到一個(gè)電子項(xiàng)目中曾經(jīng)是一個(gè)毛茸茸的前景,一個(gè)名副其實(shí)的老鼠的電線和代碼巢。專(zhuān)用LED驅(qū)動(dòng)器芯片的到來(lái)帶來(lái)了可喜的緩解,減輕了微控制器的繁瑣工作,使人們可以專(zhuān)注于應(yīng)用。更簡(jiǎn)單,但仍然不是“圣誕燈”簡(jiǎn)單。

WS2812 集成光源-或以Adafruit的說(shuō)法 NeoPixel 就是尋求簡(jiǎn)單,可擴(kuò)展且價(jià)格合理的全色LED的最新進(jìn)展。紅色,綠色和藍(lán)色LED與驅(qū)動(dòng)器芯片一起集成到通過(guò)單線控制的微小表面貼裝封裝中。它們可以單獨(dú)使用,鏈接成更長(zhǎng)的字符串或組合成更有趣的形狀因數(shù)。

Adafruit NeoPixel的使用指南

我們知道您渴望入門(mén)……但是,如果這是您第一次使用NeoPixels,請(qǐng)至少在連接任何內(nèi)容之前閱讀“最佳做法”頁(yè)面!

關(guān)于NeoPixels的重要重要事項(xiàng)

并非所有可尋址的LED都是NeoPixels?!?NeoPixel”是Adafruit的品牌,基于 WS2812 , WS2811 和 SK6812 LED/驅(qū)動(dòng)器,可分別尋址RGB彩色像素和條,使用單線控制協(xié)議。我們提供的其他LED產(chǎn)品-DotStars,WS2801像素,LPD8806和“模擬”燈帶-使用不同的方法(并有自己的教程)。 在論壇上尋求技術(shù)支持時(shí),如果提到正確的LED類(lèi)型,則可以更快找到解決方案,即避免將DotStars稱(chēng)為“ NeoPixels”…相似但不同!

NeoPixels!不要只是自己發(fā)光他們需要一個(gè)微控制器(例如Arduino)和一些程序。我們提供一些示例代碼來(lái)幫助您入門(mén)。要?jiǎng)?chuàng)建自己的效果和動(dòng)畫(huà),您需要一些編程實(shí)踐。如果這是一種新體驗(yàn),請(qǐng)遍歷一些Arduino入門(mén)教程,以體會(huì)這種語(yǔ)言。

NeoPixels并不是每個(gè)項(xiàng)目的答案。時(shí)序要求非常嚴(yán)格,某些開(kāi)發(fā)板(例如Netduino或Raspberry Pi)無(wú)法可靠地實(shí)現(xiàn)這一目標(biāo)。這就是為什么我們繼續(xù)提供其他類(lèi)型的LED的原因。有些更適合某些情況。

我可以使用NeoPixels進(jìn)行POV(視力保持)顯示嗎?

不推薦。刷新率相對(duì)較低(約400 Hz),快速運(yùn)動(dòng)的彩色顯示屏可能看起來(lái)“有斑點(diǎn)”。盡管如此,它們?cè)诠潭@示屏(招牌,裝飾品,珠寶等)中看起來(lái)還是不錯(cuò)的。對(duì)于POV使用,DotStar條帶看起來(lái)要好得多(它們的刷新率約為20KHz)。

光繪怎么樣?

絕對(duì)!攝影燈繪畫(huà)使用的動(dòng)作較慢,這并不會(huì)引起人們對(duì)刷新率的限制。

鏈中NeoPixels的數(shù)量是否有限制?

NeoPixel鏈的最大長(zhǎng)度沒(méi)有固有限制,但最終您會(huì)遇到各種實(shí)踐限制:

RAM: NeoPixels需要主機(jī)微控制器提供一些RAM;更多像素=更多RAM。每個(gè)像素只有幾個(gè)字節(jié),但是由于大多數(shù)微控制器都受到相當(dāng)有限的資源限制,因此對(duì)于大型項(xiàng)目來(lái)說(shuō),這是一個(gè)非?,F(xiàn)實(shí)的考慮。

功耗:每個(gè)NeoPixel都會(huì)消耗一點(diǎn)點(diǎn)當(dāng)前;更多像素=更多功率。電源也有一些上限。

時(shí)間:NeoPixels以固定的數(shù)據(jù)速率處理來(lái)自主機(jī)微控制器的數(shù)據(jù)。更多的像素=更多的時(shí)間和更低的動(dòng)畫(huà)幀速率。

形狀因素

NeoPixel產(chǎn)品以成千上萬(wàn)的形式提供。..從單個(gè)微小的像素到巨大的矩陣……再加上條,環(huán)和介于兩者之間的所有東西。

選擇一個(gè)類(lèi)別從左側(cè)列中獲取針對(duì)每種NeoPixel的產(chǎn)品鏈接以及提示和技巧。

基本連接

首先,假設(shè)您已將某種型號(hào)的Arduino微控制器連接到計(jì)算機(jī)的USB端口。稍后我們將詳細(xì)介紹為NeoPixels供電的細(xì)節(jié),但是通常,您通常會(huì)使用 5V直流電源(例如,“壁式電源適配器”)或(對(duì)于可穿戴項(xiàng)目)使用3.7伏鋰聚合物電池。

標(biāo)識(shí)NeoPixel帶,像素或其他設(shè)備的“輸入”端。在某些情況下,會(huì)有一個(gè)標(biāo)有“ DIN”或“ DI”(數(shù)據(jù)輸入)的焊盤(pán)。其他的箭頭將顯示數(shù)據(jù)移動(dòng)的方向。數(shù)據(jù)輸入可以源自Arduino上的任何數(shù)字引腳,但是默認(rèn)情況下,所有示例代碼都為數(shù)字引腳6 設(shè)置。 NeoPixel屏蔽使用這種方式進(jìn)行接線。

如果使用帶鋰聚合物電池的Flora,F(xiàn)eather或其他微控制器板:將帶上的+ 5V輸入連接到標(biāo)有VBAT或板上的BAT,從板條到微控制器板上任何GND焊盤(pán)的GND,以及DIN至Flora引腳D6的BAT。如果該板沒(méi)有6號(hào)插針,則需要修改示例代碼以更改插針號(hào)。

對(duì)于其他具有獨(dú)立+ 5V DC電源的Arduino板NeoPixels::將配電板上的+ 5V輸入連接至電源的+(正)端子(請(qǐng)勿連接至Arduino),將DIN連接至Arduino的數(shù)字引腳6,以及–(減號(hào)或板上的GND)必須連接到直流電源上的兩者減號(hào)(–)端子《《》和Arduino上的GND引腳(通常有多個(gè)-任何都可以)。

144個(gè)像素條是如此緊密地包裝在一起,除了–,+和數(shù)據(jù)方向箭頭外,沒(méi)有其他標(biāo)簽空間。數(shù)據(jù)是未標(biāo)記的填充。

這三個(gè)引腳的順序可能會(huì)有所不同在不同的帶鋼密度和批次之間。始終使用打印在條帶上的標(biāo)簽。仔細(xì)觀察,切勿盲目遵循NeoPixel帶狀接線圖;

將NeoPixels連接到任何LIVE電源或微控制器時(shí),始終連接地面( –)在進(jìn)行其他任何操作之前。相反,分離時(shí)最后斷開(kāi)接地。

使用DC時(shí)電源或特別大的電池,我們建議在+和–端子之間添加一個(gè)大電容器(1000 μF,6.3V或更高)。這防止了電流的初始涌入損壞像素。有關(guān)示例,請(qǐng)參見(jiàn)下一頁(yè)的照片。

通孔NeoPixels(5mm或8mm),在每個(gè)PIXEL的+和–引腳之間添加一個(gè)0.1 μF電容器。如果沒(méi)有此“去耦上限”,則單個(gè)像素可能會(huì)顯示異常。

在微控制器的數(shù)據(jù)引腳和NeoPixels上的數(shù)據(jù)輸入之間的?470歐姆電阻可幫助防止數(shù)據(jù)線上的尖峰損壞第一像素。請(qǐng)?jiān)谀膍icro和NeoPixels之間添加一個(gè)!我們的NeoPixel戒指已經(jīng)在該電阻上

NeoPixels可以直接從Arduino的5V引腳供電嗎?

有時(shí)。 Arduino可以連續(xù)僅向5V引腳提供約500毫安的電流。每個(gè)NeoPixel可以在全亮度下吸收高達(dá)60毫安的電流。因此,是的,只要僅使用幾個(gè)像素,就可以跳過(guò)單獨(dú)的直流電源并直接關(guān)閉Arduino 的電源。如果顏色和整體亮度較低,則更多。如有疑問(wèn),請(qǐng)為像素提供單獨(dú)的電源。

最佳做法

不當(dāng)使用會(huì)損壞您的NeoPixels。潛水之前,請(qǐng)注意以下事項(xiàng):

在將NeoPixels連接到任何大型電源(直流“壁式電源”或什至是大電池)之前,請(qǐng)?zhí)砑右粋€(gè)電容器(如上所示,在+和–端子之間跨接1000 μF,6.3V或更高)。電容器可緩沖由條狀電路汲取的電流中的突然變化。

在Arduino數(shù)據(jù)輸出引腳和第一個(gè)NeoPixel的輸入之間放置一個(gè) 300至500歐姆電阻。電阻應(yīng)位于最靠近NeoPixel的電線末端,而不是微控制器。 某些產(chǎn)品已經(jīng)集成了該電阻器。..如果不確定,加一個(gè)電阻器……倍增無(wú)害!

嘗試最小化距離在Arduino和第一個(gè)像素之間,因此信號(hào)清晰。一兩米通常是沒(méi)有問(wèn)題的。更長(zhǎng)的時(shí)間會(huì)變得不可靠。

避免將NeoPixels連接到帶電電路。如果您只是必須,請(qǐng)始終先接地》 ,然后是+ 5V,然后是數(shù)據(jù)。以相反的順序斷開(kāi)連接。

如果使用單獨(dú)的電源為像素供電,請(qǐng)?jiān)跒槲⒖刂破鞴╇娭跋冉o像素供電。

請(qǐng)遵守與任何其他預(yù)防措施相同的預(yù)防措施。 靜電敏感部分;

由5v電源供電的NeoPixels 需要一個(gè)5V數(shù)據(jù)信號(hào)。如果使用3.3V微控制器,則必須使用邏輯電平轉(zhuǎn)換器,例如74AHCT125或74HCT245。 (如果要像從LiPoly一樣以3.7v為NeoPixels供電,則3.3v數(shù)據(jù)信號(hào)就可以了)

確保連接牢固。鱷魚(yú)夾無(wú)法可靠地連接NeoPixel環(huán)上的微小焊盤(pán)。最好將一根細(xì)尾線焊接到環(huán)上,然后將鱷魚(yú)夾固定到該環(huán)上。

如果您的微控制器和NeoPixel由兩個(gè)不同的電源供電(例如,每個(gè)電源都獨(dú)立電池),則必須 是兩者之間的接地連接。

我們的某些項(xiàng)目并未采取上述預(yù)防措施……這些通常是小型電池供電的設(shè)備,功率尖峰不是一個(gè)大問(wèn)題。 任何像素很多或電源很大的項(xiàng)目都必須包括電源電容器和數(shù)據(jù)線電阻。

為NeoPixels供電

將NeoPixels連接到任何帶電電源或微控制器時(shí),總是否則,請(qǐng)先接地(–)。相反,分離時(shí)最后斷開(kāi)接地。

添加300微控制器數(shù)據(jù)引腳和第一個(gè)NeoPixel上的數(shù)據(jù)輸入之間的500歐姆電阻可幫助防止可能會(huì)損壞第一個(gè)像素的電壓尖峰。請(qǐng)?jiān)谀膍icro和NeoPixels之間添加一個(gè)!

NeoPixels通常被描述為“ 5伏設(shè)備”,但實(shí)際情況要比這稍微細(xì)微一點(diǎn)。

有些(不是全部)NeoPixel產(chǎn)品可以在稍高的電壓下工作。根據(jù)可用空間,成本和最可能的應(yīng)用,這取決于芯片周?chē)钠渌С纸M件。 有關(guān)每種類(lèi)型可接受的電壓限制的指導(dǎo),請(qǐng)參見(jiàn)特定的產(chǎn)品說(shuō)明頁(yè)面。如有疑問(wèn),請(qǐng)以5伏為目標(biāo)。

始終可接受較低的電壓,需要注意的是,LED會(huì)稍微變暗。有一個(gè)極限值,LED指示燈將無(wú)法點(diǎn)亮,或者開(kāi)始顯示錯(cuò)誤的顏色。

四個(gè)電池中的四個(gè)鎳氫(NiMH)可充電電池可以類(lèi)似地用于提供4.8伏的電壓。

請(qǐng)確保您 僅 在此配置中使用NiMH電池。四個(gè)堿性電池(一次性類(lèi)型)將總共輸出6V電壓-對(duì)于某些NeoPixels來(lái)說(shuō)太高了,肯定

在將NeoPixel條帶連接到任何電源之前,我們強(qiáng)烈建議添加一個(gè)大電容器(1000 μ 《+和–端子之間的b》 F,6.3V或更高)。這樣可以防止電流的初始涌入損壞像素。

對(duì)于許多可穿戴項(xiàng)目,我們建議使用鋰聚合物電池。它們可提供3.7伏特的電壓-非常適合直接饋入Adafruit Flora等低功率微控制器,但電壓足以運(yùn)行較短的NeoPixels。

三個(gè)堿性電池(例如AA電池)可以安裝在電池座中,以提供4.5伏的電壓。盡管比精美的鋰聚合物包裝更大,更重,但它們價(jià)格便宜且易于獲得。

電池供電的LED項(xiàng)目規(guī)劃在 LED像素和條帶 。

適用于大多數(shù)非便攜式“桌面” op”項(xiàng)目中,理想的5V DC開(kāi)關(guān)電源。這種2安培的小電源非常適合一米左右的NeoPixel帶。我們將在稍后解釋大型項(xiàng)目。

對(duì)臺(tái)式電源要格外小心。有些電源-甚至是知名的,備受好評(píng)的品牌-初次開(kāi)機(jī)時(shí)可能會(huì)產(chǎn)生較大的電壓尖峰,從而立即損壞NeoPixels!

如果使用臺(tái)式電源,請(qǐng)勿直接連接NeoPixels。首先打開(kāi)電源,讓電壓穩(wěn)定,然后然后連接像素(首先連接GND)。

估算功率要求每個(gè)NeoPixel均以最大亮度白色(紅色+綠色+藍(lán)色)。不過(guò),在實(shí)際使用中,很少會(huì)像這樣打開(kāi)所有像素。混合顏色并顯示動(dòng)畫(huà)時(shí),當(dāng)前繪制會(huì)少得多。不可能在所有情況下都估計(jì)一個(gè)數(shù)字,但是作為經(jīng)驗(yàn)法則,我們一直使用1/3的電流(每像素20 mA)作為標(biāo)準(zhǔn),而不會(huì)產(chǎn)生不良影響。但是,如果您知道每個(gè)像素都需要以最大亮度點(diǎn)亮,請(qǐng)使用60 mA的完整數(shù)字。

要估算電源需求,請(qǐng)將像素?cái)?shù)乘以20,然后將結(jié)果除以1,000,經(jīng)驗(yàn)法則”(安培)中的電源額定值。如果要在所有情況下都保證絕對(duì)的安全裕度,請(qǐng)使用60(而不是20)。例如:

60 NeoPixels×20 mA÷1,000 =最小1.2安培

60 NeoPixels×60 mA÷1,000 =最小3.6安培

功率中“開(kāi)銷(xiāo)”的選擇供應(yīng)完全取決于您。更大尺寸的電源可實(shí)現(xiàn)最大的安全性和可靠性,這是我們的建議。大多數(shù)電源可以在短時(shí)間內(nèi)短暫地施加一些額外的電流。許多都裝有熱熔斷器,如果工作過(guò)度,它們只會(huì)關(guān)斷。因此,從技術(shù)上講,他們可能會(huì)工作,但這在電子學(xué)上等同于濫用租車(chē)。

請(qǐng)記住,60 mA是最差的案例估計(jì)!我們已經(jīng)編寫(xiě)了一個(gè)單獨(dú)的完整教程來(lái)控制一切:使用NeoPixels汲取力量。

我估計(jì)我需要3.6 Amp電源。我手頭有10安培的電源。

只要輸出是5伏直流電,這會(huì)導(dǎo)致我的NeoPixels爆炸嗎?你真金。 LED將僅吸收所需的電流(安培)。因此,額外的安培是可以的-實(shí)際上,這可能是好的事情。較大的電源將運(yùn)行,因?yàn)樗鼪](méi)有被推到極限。

過(guò)大的電壓肯定會(huì)殺死您的LED。

額外的安培=好。 額外電壓=不好。

電池和“安培小時(shí)數(shù)”如何?

安培小時(shí)數(shù)是當(dāng)前時(shí)間。可以將2600 mAh(毫安小時(shí))的電池視為一小時(shí)連續(xù)提供2.6安培,或者連續(xù)2小時(shí)提供1.3安培,依此類(lèi)推。實(shí)際上,它不是那樣線性的;大多數(shù)電池在重載下的運(yùn)行時(shí)間會(huì)成比例地縮短。另外,大多數(shù)電池在一個(gè)小時(shí)內(nèi)都不會(huì)被放電– 這甚至可能很危險(xiǎn)!選擇足夠大的電池,至少要花費(fèi)幾個(gè)小時(shí)跑下來(lái)。對(duì)于您來(lái)說(shuō),這既安全又對(duì)電池的壽命也有好處。

我需要為NeoPixels的很多電源供電,并且沒(méi)有那么大的電源。我可以使用幾個(gè)較小的嗎?

也許。使用單個(gè)電源的好處,下面將討論大型電源。不過(guò),“非最佳”并不一定意味著“悲觀”,我們也不會(huì)阻止任何人使用他們擁有的資源。

如果走這條路,關(guān)鍵是要在所有接地銷(xiāo)之間板條共同連接,但每個(gè)電源的+ 5V只能連接到NeoPixels的一個(gè)長(zhǎng)度,而不應(yīng)該全部連接。每個(gè)電源都有一點(diǎn)不同-并非精確地是 5伏特-并且可以防止某些電源向后饋電。

巨型電源

Adafruit提供最高10A的5V直流電源。這通常足以滿(mǎn)足數(shù)百個(gè)NeoPixels或更多。對(duì)于真正大型安裝,您需要將其放在其他地方。

一種可能性是重新使用ATX計(jì)算機(jī)電源。強(qiáng)大的服務(wù)器類(lèi)型通??商峁└哌_(dá)30安培的電流。需要進(jìn)行一些細(xì)微的修改……圍繞Google進(jìn)行“ ATX電源破解”。請(qǐng)注意,如果12V導(dǎo)軌上沒(méi)有負(fù)載,則ATX 5V導(dǎo)軌可能非常不穩(wěn)定!

更大(更可怕,更昂貴)的實(shí)驗(yàn)室額定電流達(dá)數(shù)百安培的電源。有時(shí)這是建筑規(guī)模項(xiàng)目和大型生產(chǎn)所需的。有時(shí)我們會(huì)尋求幫助。..

請(qǐng)注意,這種規(guī)模的項(xiàng)目可能非常危險(xiǎn),而且配電問(wèn)題與業(yè)余規(guī)模的項(xiàng)目根本不同。我們很樂(lè)意在論壇中為我們的客戶(hù)提供幫助,他們只是為他們提供產(chǎn)品技術(shù)支持,而不是為他們提供全面的工程服務(wù)。如果您正在開(kāi)發(fā)此類(lèi)項(xiàng)目, ,請(qǐng)聘請(qǐng)?jiān)诖蠊β剩蛪合到y(tǒng)(例如光伏或大型RV和船只)方面經(jīng)驗(yàn)豐富的專(zhuān)業(yè)電工。這不是偽裝。

Distribution Power 電線越長(zhǎng),電阻越大。電阻越大,沿其長(zhǎng)度下降的電壓就越大。如果電壓降得太遠(yuǎn),則NeoPixels的顏色可能會(huì)受到影響。

請(qǐng)考慮整整4米長(zhǎng)的NeoPixels。在條帶的一端施加5V電壓時(shí),對(duì)于最接近該端的那些像素,功率僅穿過(guò)幾英寸的銅線。但是在帶狀電纜的最遠(yuǎn)端,電源橫穿了 8米的銅線-在+ 5V線上出4米,在地線上又出4米。由于電壓降,最遠(yuǎn)的像素將變?yōu)楹稚ㄋ{(lán)色和綠色的LED需要比紅色更高的電壓)。

專(zhuān)業(yè)提示: NeoPixels不在乎它們從何端獲得電源。盡管數(shù)據(jù)僅在一個(gè)方向上移動(dòng),但電可以雙向移動(dòng)。您可以在頭,尾部和 》中間,或者理想情況下將其分發(fā)給幾個(gè)點(diǎn)。為了獲得最佳的色彩一致性,請(qǐng)確保任何像素與電源連接之間的距離不超過(guò)1米。對(duì)于較大的NeoPixel設(shè)置,請(qǐng)將功率分配視為一棵樹(shù)的分支,而不是一條連續(xù)的線。

在微小的項(xiàng)目中,電阻也是一個(gè)問(wèn)題!

對(duì)于可穿戴電子設(shè)備,我們喜歡導(dǎo)電線……它柔軟且可以洗手。缺點(diǎn)是它沒(méi)有太多電流。在這里,幾根導(dǎo)電線被組合在一起,以便為一對(duì)懸掛器的+和–導(dǎo)體提供更好的容量。

(來(lái)自“ Pac Man像素懸掛器”指南。)

從3.3V微控制器驅(qū)動(dòng)5V NeoPixel

越來(lái)越多的微控制器以3.3伏而不是5伏的電壓運(yùn)行。這是提高效率的好消息,但可能會(huì)帶來(lái)5V NeoPixels的通信問(wèn)題。來(lái)自微控制器的3.3V信號(hào)可能不夠“響亮”,無(wú)法向更高電壓的設(shè)備注冊(cè)。制造商建議最小信號(hào)電壓為NeoPixel電壓的70%。

有兩種解決方法:

降低NeoPixel的電壓,使其更接近(或相等)到微控制器。這就是為什么我們建議FLORA項(xiàng)目使用LiPo電池的原因:3.7V電壓足以運(yùn)行較短的像素長(zhǎng)度,并且微控制器在該電壓下也很舒適。

使用邏輯電平轉(zhuǎn)換器來(lái)逐步提高電壓。

有關(guān)在NeoPixels上使用電平轉(zhuǎn)換器的更多信息,請(qǐng)參閱本指南。

軟件

NeoPixels始于Arduino,但此后擴(kuò)展到了其他開(kāi)發(fā)板和語(yǔ)言。

從左欄中選擇類(lèi)別每個(gè)編碼環(huán)境特有的信息。

Python和CircuitPython

將NeoPixel LED與Python或CircuitPython以及Adafruit CircuitPython NeoPIxel模塊一起使用很容易。通過(guò)該模塊,您可以輕松地編寫(xiě)控制LED的Python代碼。

借助我們的CircuitPython-for-Python Adafruit_Blinka,您可以將這些LED與任何CircuitPython微控制器板或具有GPIO和Python的計(jì)算機(jī)一起使用。兼容性庫(kù)。

CircuitPython微控制器接線

首先,完全按照前一頁(yè)所示,將一些NeoPixels連接到板上。確認(rèn)您的連接位于數(shù)據(jù)輸入或 DIN 一側(cè)。插入DATA OUT或DOUT端是一個(gè)常見(jiàn)錯(cuò)誤!連接帶有標(biāo)簽,某些格式帶有箭頭,指示數(shù)據(jù)必須流向。

請(qǐng)勿使用微控制器上的USB引腳為多個(gè)LED供電!除此之外,您還需要使用外部電源。有關(guān)更多信息,請(qǐng)查看本指南的“啟用NeoPixels”頁(yè)面:https://learn.adafruit.com/adafruit-neopixel-uberguide/powering-neopixels

下面是將Feather M0連接到NeoPIxel帶的示例:

板載USB 到 LED 5V

板載GND 》連接到 LED接地

D5板到 LED Din

Python計(jì)算機(jī)接線

由于可以使用數(shù)十臺(tái) Linux計(jì)算機(jī)/主板,因此我們將顯示Raspberry Pi的接線。對(duì)于其他平臺(tái),請(qǐng)?jiān)L問(wèn)Linux上的CircuitPython指南,以了解您的平臺(tái)是否受支持。

以下是連接到NeoPixel帶的Raspberry Pi:

Pi 5V 至 LED 5V

Pi GND 到 LED GND

Pi GPIO18 要在樹(shù)莓派上 LED Din

,必須將 NeoPixels連接到GPIO10,GPIO12,GPIO18或GPIO21 才能正常工作!

CircuitPython安裝NeoPixel庫(kù)

您需要在CircuitPython板上安裝Adafruit CircuitPython NeoPixellibrary。

首先請(qǐng)確保您正在為板運(yùn)行最新版本的Adafruit CircuitPython。/p》

接下來(lái),您需要安裝必要的庫(kù)以使用硬件-仔細(xì)按照以下步驟從Adafruit的CircuitPython庫(kù)捆綁包中查找和安裝這些庫(kù)。我們的CircuitPython入門(mén)指南上有一個(gè)很棒的頁(yè)面,說(shuō)明如何安裝庫(kù)捆綁包。

對(duì)于諸如Trinket M0或Gemma M0的非表達(dá)板,您需要從捆綁包中手動(dòng)安裝必要的庫(kù):

neopixel.mpy

adafruit_bus_device

在繼續(xù)之前,請(qǐng)確保板的lib文件夾或根文件系統(tǒng)具有 neopixel.mpy,和 adafruit_bus_device 文件和文件夾 已復(fù)制。/p》

下一步連接到開(kāi)發(fā)板的串行REPL,這樣您就可以在CircuitPython上出現(xiàn)》》》 提示。

NeoPixel庫(kù)的Python安裝

您需要安裝Adafruit_Blinka庫(kù),該庫(kù)在Python中提供CircuitPython支持。這可能還需要驗(yàn)證您正在運(yùn)行Python3。由于每個(gè)平臺(tái)都有一些不同,并且Linux經(jīng)常更改,請(qǐng)?jiān)L問(wèn)Linux上的CircuitPython指南,以準(zhǔn)備好您的計(jì)算機(jī)!

一旦完成,請(qǐng)從您的命令行運(yùn)行以下命令:

sudo pip3 install adafruit-circuitpython-neopixel

如果您的默認(rèn)Python是版本3,則可能需要運(yùn)行‘pip’。只要確保您不嘗試在Python 2.x上使用CircuitPython,就不支持它!

CircuitPython和Python用法

為演示此庫(kù)與NeoPixel LED的用法,我們將使用開(kāi)發(fā)板的Python REPL。

要使NeoPixels在Raspberry Pi上運(yùn)行,您必須以root身份運(yùn)行代碼!需要根訪問(wèn)權(quán)限才能訪問(wèn)RPi外圍設(shè)備。

運(yùn)行以下代碼以導(dǎo)入必要的模塊,并初始化帶有30個(gè)LED的NeoPixel燈條。如果您的NeoPixels連接到其他引腳,別忘了更改引腳,如果數(shù)字不同則更改像素?cái)?shù)。

下載:文件

復(fù)制代碼

import board

import neopixel

pixels = neopixel.NeoPixel(board.D5, 30) # Feather wiring!

# pixels = neopixel.NeoPixel(board.D18, 30) # Raspberry Pi wiring! import board

import neopixel

pixels = neopixel.NeoPixel(board.D5, 30) # Feather wiring!

# pixels = neopixel.NeoPixel(board.D18, 30) # Raspberry Pi wiring!

現(xiàn)在,您準(zhǔn)備使用以下屬性點(diǎn)亮NeoPixel LED:

亮度-LED的整體亮度

填充-為所有像素著色一種給定的顏色。

顯示-如果auto_write設(shè)置為False,則更新LED顏色。

例如,點(diǎn)亮第一個(gè)NeoPixel紅色:

下載:文件

復(fù)制代碼

pixels[0] = (255, 0, 0) pixels[0] = (255, 0, 0)

要點(diǎn)亮所有NeoPixels綠色:

下載:文件

復(fù)制代碼

pixels.fill((0, 255, 0)) pixels.fill((0, 255, 0))

這就是CircuitPython和NeoPixel LED入門(mén)的全部?jī)?nèi)容!

完整示例代碼

下載:項(xiàng)目Zip 或 neopixel_simpletest.py | 在Github上查看

復(fù)制代碼

import time

import board

import neopixel

# On CircuitPlayground Express, and boards with built in status NeoPixel -》 board.NEOPIXEL

# Otherwise choose an open pin connected to the Data In of the NeoPixel strip, i.e. board.D1

pixel_pin = board.NEOPIXEL

# On a Raspberry pi, use this instead, not all pins are supported

#pixel_pin = board.D18

# The number of NeoPixels

num_pixels = 10

# The order of the pixel colors - RGB or GRB. Some NeoPixels have red and green reversed!

# For RGBW NeoPixels, simply change the ORDER to RGBW or GRBW.

ORDER = neopixel.GRB

pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.2, auto_write=False,

pixel_order=ORDER)

def wheel(pos):

# Input a value 0 to 255 to get a color value.

# The colours are a transition r - g - b - back to r.

if pos 《 0 or pos 》 255:

r = g = b = 0

elif pos 《 85:

r = int(pos * 3)

g = int(255 - pos*3)

b = 0

elif pos 《 170:

pos -= 85

r = int(255 - pos*3)

g = 0

b = int(pos*3)

else:

pos -= 170

r = 0

g = int(pos*3)

b = int(255 - pos*3)

return (r, g, b) if ORDER == neopixel.RGB or ORDER == neopixel.GRB else (r, g, b, 0)

def rainbow_cycle(wait):

for j in range(255):

for i in range(num_pixels):

pixel_index = (i * 256 // num_pixels) + j

pixels[i] = wheel(pixel_index & 255)

pixels.show()

time.sleep(wait)

while True:

# Comment this line out if you have RGBW/GRBW NeoPixels

pixels.fill((255, 0, 0))

# Uncomment this line if you have RGBW/GRBW NeoPixels

# pixels.fill((255, 0, 0, 0))

pixels.show()

time.sleep(1)

# Comment this line out if you have RGBW/GRBW NeoPixels

pixels.fill((0, 255, 0))

# Uncomment this line if you have RGBW/GRBW NeoPixels

# pixels.fill((0, 255, 0, 0))

pixels.show()

time.sleep(1)

# Comment this line out if you have RGBW/GRBW NeoPixels

pixels.fill((0, 0, 255))

# Uncomment this line if you have RGBW/GRBW NeoPixels

# pixels.fill((0, 0, 255, 0))

pixels.show()

time.sleep(1)

rainbow_cycle(0.001) # rainbow cycle with 1ms delay per step

import time

import board

import neopixel

# On CircuitPlayground Express, and boards with built in status NeoPixel -》 board.NEOPIXEL

# Otherwise choose an open pin connected to the Data In of the NeoPixel strip, i.e. board.D1

pixel_pin = board.NEOPIXEL

# On a Raspberry pi, use this instead, not all pins are supported

#pixel_pin = board.D18

# The number of NeoPixels

num_pixels = 10

# The order of the pixel colors - RGB or GRB. Some NeoPixels have red and green reversed!

# For RGBW NeoPixels, simply change the ORDER to RGBW or GRBW.

ORDER = neopixel.GRB

pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.2, auto_write=False,

pixel_order=ORDER)

def wheel(pos):

# Input a value 0 to 255 to get a color value.

# The colours are a transition r - g - b - back to r.

if pos 《 0 or pos 》 255:

r = g = b = 0

elif pos 《 85:

r = int(pos * 3)

g = int(255 - pos*3)

b = 0

elif pos 《 170:

pos -= 85

r = int(255 - pos*3)

g = 0

b = int(pos*3)

else:

pos -= 170

r = 0

g = int(pos*3)

b = int(255 - pos*3)

return (r, g, b) if ORDER == neopixel.RGB or ORDER == neopixel.GRB else (r, g, b, 0)

def rainbow_cycle(wait):

for j in range(255):

for i in range(num_pixels):

pixel_index = (i * 256 // num_pixels) + j

pixels[i] = wheel(pixel_index & 255)

pixels.show()

time.sleep(wait)

while True:

# Comment this line out if you have RGBW/GRBW NeoPixels

pixels.fill((255, 0, 0))

# Uncomment this line if you have RGBW/GRBW NeoPixels

# pixels.fill((255, 0, 0, 0))

pixels.show()

time.sleep(1)

# Comment this line out if you have RGBW/GRBW NeoPixels

pixels.fill((0, 255, 0))

# Uncomment this line if you have RGBW/GRBW NeoPixels

# pixels.fill((0, 255, 0, 0))

pixels.show()

time.sleep(1)

# Comment this line out if you have RGBW/GRBW NeoPixels

pixels.fill((0, 0, 255))

# Uncomment this line if you have RGBW/GRBW NeoPixels

# pixels.fill((0, 0, 255, 0))

pixels.show()

time.sleep(1)

rainbow_cycle(0.001) # rainbow cycle with 1ms delay per step

MakeCode

我們有一個(gè)單獨(dú)的指南,說(shuō)明了Microsoft MakeCode中NeoPixels的使用:

指南鏈接:具有MakeCode的NeoPixels

許多示例都可以在瀏覽器中使用Circuit Playground Express及其10個(gè)內(nèi)置NeoPixel LED正常運(yùn)行。甚至還有一頁(yè)說(shuō)明如何將MakeCode與外部條帶一起使用。

下載

WS2812數(shù)據(jù)表(用于某些較舊的項(xiàng)目)

WS2812B數(shù)據(jù)表(用于某些較舊的項(xiàng)目)

SK6812數(shù)據(jù)表(自2016年起在我們的所有產(chǎn)品欄中使用)

NeoPixel 12-LED環(huán)

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫(kù)中的Fritzing對(duì)象

NeoPixel 16-LED環(huán)

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫(kù)中的Fritzing對(duì)象

NeoPixel 24-LED環(huán)形

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫(kù)中的裝飾對(duì)象

NeoPixel 1/4 60-LED環(huán)形

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫(kù)中的Fritzing對(duì)象

NeoPixel寶石

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫(kù)中的Fritzing對(duì)象

適合面包板的NeoPixel Breakout

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫(kù)中的Fritzing對(duì)象

NeoPixel NeoMatrix 8x8

GitHub上的

EagleCAD PCB文件

Adafruit Fritzing庫(kù)中的Fritzing對(duì)象

NeoPixel Arduino Shield

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫(kù)中的Fritzing對(duì)象

NeoPixel 8 Stick

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫(kù)中的Fritzing對(duì)象

NeoPixel燈帶和鋼絞線

NeoPixel最受歡迎的類(lèi)型是這些柔性LED燈帶……它們可以切割成一定長(zhǎng)度,并適合各種用途東西。我們已經(jīng)提供了十二個(gè)品種!需要注意的兩個(gè)重要事項(xiàng):

盡管這些條被描述為“柔性的”,但它們不容許連續(xù)和反復(fù)彎曲。” “可成型”可能是一個(gè)更好的詞。典型的應(yīng)用程序是體系結(jié)構(gòu),可以將它們圍繞圓柱彎曲然后保持原樣。反復(fù)彎曲(如在服裝上)將很快使焊料連接破裂。對(duì)于可穿戴設(shè)備,可以將較短的部分固定在半剛性的底座上(例如,帽子,BMX裝甲等),也可以使用稍后顯示的各個(gè) sewable NeoPixels。

觀看你的力量。盡管每個(gè)像素只需要一點(diǎn)電流,但它加起來(lái)很快 。.. NeoPixel條形如此簡(jiǎn)單易用,可以很快帶走!我們將在“為NeoPixels供電”頁(yè)面上進(jìn)行詳細(xì)說(shuō)明。

RGB NeoPixel條帶

NeoPixel數(shù)字RGB LED防風(fēng)雨條有三種不同的“密度”:每米30個(gè),60個(gè)和144個(gè)LED,在白色或黑色背板上。

每米30個(gè)LED,白帶

每米30個(gè)LED,黑條

每米60個(gè)LED,白條

每米60個(gè)LED,黑色帶

每米144個(gè)LED,白色帶

每米144個(gè)LED ,黑條

T他的峰值峰值功耗(所有LED均以最大亮度點(diǎn)亮)為:

30 LED:9瓦(約1.8安培)

60 LED:18瓦(5伏時(shí)約為3.6安)。

144 LED: 43瓦(5伏時(shí)為8.6安)。

混合的顏色和較低的亮度設(shè)置將按比例減少功耗。

對(duì)于使用Circuit Playground Express或僅需要“ 無(wú)需焊接”的用戶(hù)選項(xiàng)(與大多數(shù)教室一樣),我們有一個(gè)特殊的半米30-LED NeoPixel燈條,上面裝有鱷魚(yú)夾。簡(jiǎn)單!

迷你緊身RGB NeoPixel條紋

Mini Skinny NeoPixel條帶大約是經(jīng)典N(xiāo)eoPixel條帶寬度的一半。它們有兩種密度和底色可供選擇:

每米30個(gè)LED,白色條帶

每米30個(gè)LED,黑條

每米60個(gè)LED,白條

每米60個(gè)LED,黑條

每米144個(gè)LED,白條

每米144個(gè)LED,黑條

30 60條LED/米條的寬度為7.5毫米,如果從外殼中卸下條,則為5毫米(與經(jīng)典條的12.5毫米/10毫米相比)。高密度的144/m膠條大約10毫米寬,或者是除去外殼的7.5毫米。

電源要求類(lèi)似于上述標(biāo)準(zhǔn)寬度的NeoPixel膠條。

側(cè)光NeoPixel條帶

/table》

RGBW NeoPixel條

《表class =“ build-table”》

側(cè)光 NeoPixel帶具有照亮 next 而不是 over 。它們的亮度不及常規(guī)NeoPixels,但在狹窄的空間或邊緣發(fā)光的丙烯酸樹(shù)脂中可能會(huì)有有趣的用途。這些燈條在黑色柔性條上以三種密度提供:

60個(gè)LED,1米長(zhǎng)的黑色燈條

90個(gè)LED, 1米長(zhǎng)的黑條

120個(gè)LED,1米長(zhǎng)的黑條

最近添加的是 RGB W NeoPixel條。這些增加了第四個(gè)LED元素-純白色-比紅色+綠色+藍(lán)色混合的白色更“真實(shí)”和令人賞心悅目。像RGB燈帶一樣,它們具有不同的像素密度和底襯顏色。

每米30條RGBW LED,白帶

《每米每米30個(gè)RGBW LED,強(qiáng)光

米,每米60個(gè)RGBW LED,白光

每米60個(gè)RGBW LED米,黑條

每米144個(gè)RGBW LED,白條

每米144個(gè)RGBW LED,黑條

每個(gè)像素有第四個(gè)LED,這些條帶可能比其RGB等效條帶多消耗33%的電流。最大亮度最大的情況是(大約):

30個(gè)RGBW LED:12瓦(5伏時(shí)為2.4安)

60 RGBW LED:24瓦(5伏時(shí)為4.8安培)

144 RGBW LED:57瓦(5伏時(shí)為11.5安培)

寬度與“經(jīng)典” NeoPixel條帶相同……這些尺寸不是“皮包骨頭”的尺寸。

“ Neon-Like” NeoPixel Flex Strip

這種獨(dú)特的NeoPixel柔性條帶厚實(shí)的硅膠外殼,具有類(lèi)似 neon-like 的擴(kuò)散外觀。

此條帶在儀表上包含 60個(gè)LED,但每像素3個(gè)LED。因此,基本上,在您的NeoPixel程序中,這看起來(lái)像一串20像素長(zhǎng)的線。

與NeoPixel帶的其他品種不同,該線需要從9伏(最低)到12伏(理想)的功率DC。

帶有硅膠管的NeoPixel RGB霓虹燈狀LED軟燈條-1米

紫外線NeoPixel條

單色 NeoPixel條帶的 ultraviolet 變體可用于特殊應(yīng)用,目前具有一種像素密度和底色:

每米32個(gè)UV LED,白色剝離

與紫外線反應(yīng)性涂料,熒光激光切割丙烯酸等組合使用時(shí),可以提供不同尋常的效果。

通常的NeoPixel R,G和B頻道轉(zhuǎn)換為三個(gè)單獨(dú)的紫外線二極管。因此,我們建議您幾乎將三個(gè)通道都設(shè)置為相同的值,范圍從(0,0,0)到(255,255,255)。

與“經(jīng)典” NeoPixel條帶的寬度相同,并且在全亮度下的功耗僅略高于RGB 30/m:約9.6W/米(1.9A @ 5V)。

NeoPixel鋼絞線

像NeoPixel條一樣,這些“ 鋼絞線” 靈活,并且可以被包裹在東西周?chē)O袼刂g的距離更遠(yuǎn)(2或4英寸),每個(gè)像素被密封在自己的小塑料盒中,使其具有防風(fēng)雨(但不適合連續(xù)浸沒(méi))。一串中有 20個(gè)像素。

NeoPixel鋼絞線— 20 LED 4“間距

NeoPixel鋼絞線— 2“間距處的20個(gè)LED

關(guān)于NeoPixel條的詳細(xì)信息

144 像素/米NeoPixel條和 32 /m紫外線條的銷(xiāo)售長(zhǎng)度為一米。每個(gè)儀表都是帶有末端連接器的單獨(dú)條。在144個(gè)像素/m RGB,RGBW或32/m UV中,不提供更長(zhǎng)的連續(xù)長(zhǎng)度。

30 和 60 像素/米NeoPixel條帶以一米 倍數(shù)銷(xiāo)售。多米的訂單將是單個(gè)連續(xù)條帶,最高限額:對(duì)于60像素/米帶,為4米;對(duì)于30像素/米,帶為5米。

對(duì)于 30 和 60 像素/米帶,如果購(gòu)買(mǎi)《如果該鋼帶少于完整的卷軸(分別為4米或5米),則該鋼帶可能會(huì)或可能不會(huì)在一端或兩端焊接了3針JST插頭。這些插頭用于工廠測(cè)試,并且可能位于任一端 –插頭并不總是指示輸入端!打印在條形上的箭頭顯示了實(shí)際的數(shù)據(jù)方向。您可能需要焊接自己的電線或插頭。

將彎曲帶封閉在防風(fēng)雨的硅膠套中,以防雨淋和飛濺,但是不建議用于連續(xù)浸沒(méi)。早期的144像素/米條帶不是防風(fēng)雨的,但是當(dāng)前的庫(kù)存現(xiàn)在提供了此功能。

可以切割和移除硅膠套,以實(shí)現(xiàn)更薄的外形,但這會(huì)損害條帶的耐候性。

極少的膠粘劑會(huì)粘附在耐候性硅膠套上。使用拉鏈扎帶進(jìn)行“機(jī)械”粘合通常更快,更容易。我們發(fā)現(xiàn)的唯一可靠的膠水是Permatex 66B透明RTV硅樹(shù)脂(并非所有的硅膠都可以使用?。┖蜆?lè)泰塑料粘合系統(tǒng)(一種由2組分組成的氰基丙烯酸酯膠)。客戶(hù)還報(bào)告了 Permatex超灰色硅膠墊片制造商的出色結(jié)果。

但是, 不要使用Permatex 66B硅樹(shù)脂密封切割條的開(kāi)口端!像許多RTVsilicones一樣,66B在固化時(shí)會(huì)釋放出乙酸,這會(huì)破壞電子器件。在條帶的外部上很好,但在條帶的內(nèi)部則沒(méi)問(wèn)題。使用 GE Silicone II 密封條帶末端,或者良好的密封性能

兩面地毯膠帶,可以輕松抓住硅膠套;類(lèi)似于便利貼?;蛘撸部梢試L試在頂部清除管道膠帶。

所有LED燈條都是按 1/2米分段制造的然后加入到更長(zhǎng)的條中。這些連接處的像素間距通常與其余連接相差2-3毫米。這不是制造錯(cuò)誤,而只是物理現(xiàn)實(shí)。

某些144像素帶狀發(fā)光二極管在LED之間沒(méi)有焊盤(pán)。如果將它們切成較短的部分,則連接它們的唯一方法(半米部分除外)是小心地直接焊接到LED。缺口的一角是GND引腳。

NeoPixel條僅僅是個(gè)開(kāi)始……我們已經(jīng)有了形狀!圓環(huán),網(wǎng)格,盾牌等等……

NeoPixel環(huán)

NeoPixel環(huán)是裝飾有NeoPixel LED的圓形剛性印刷電路板。最初是為我們的 NeoPixel護(hù)目鏡套件設(shè)計(jì)的,事實(shí)證明它們?cè)谄渌?xiàng)目中非常受歡迎……時(shí)計(jì),GPS尋路器,珠寶等……現(xiàn)在我們提供了幾種尺寸和品種……

而不是列出了無(wú)數(shù)個(gè)不同的鏈接,我們只有一個(gè)登錄頁(yè)面,可以在所有不同的NeoPixel戒指產(chǎn)品中進(jìn)行選擇:

NeoPixel戒指產(chǎn)品選擇器

NeoPixel戒指有 12 , 16 , 24 和 60 像素品種。

60 像素環(huán)實(shí)際上作為 15 像素季度。要獲得整圈,您需要購(gòu)買(mǎi) 4 和焊料他們?cè)谝黄?。否則,您可能會(huì)發(fā)現(xiàn)個(gè)人弧的創(chuàng)意

像素?cái)?shù)外徑內(nèi)徑

1237毫米/1.5 “23毫米/1”

1644.5毫米/1.75英寸31.75毫米/1.25英寸

2466毫米/2.6英寸52.5毫米/2.05英寸

60(4個(gè)15像素?。?58 mm/6.2“145毫米/5.7英寸

所有環(huán)的厚度約為3.6毫米/0.15英寸(1.6毫米)對(duì)于PCB,對(duì)于NeoPixels,為2毫米)。

RGB NeoPixels最便宜,可以產(chǎn)生數(shù)百萬(wàn)的顏色組合。

RGBW NeoPixels除了提供RGB之外,還提供了令人賞心悅目的“真實(shí)”白色 。有三種不同的色溫可供選擇:

酷白:大約 6000 開(kāi)爾文(K)。

中性:約 4500K 。

暖白:約。 3000K 。

RGBW像素包含一個(gè)半透明的擴(kuò)散器層,以幫助混合和柔化光輸出。這使它們看起來(lái)強(qiáng)度不如RGB像素(“水透明”)強(qiáng),但是里面的LED確實(shí)相同。

關(guān)于NeoPixel環(huán)的細(xì)部細(xì)節(jié)

將電線焊接到這些環(huán)時(shí),您需要格外警惕焊料斑點(diǎn)和短路。組件之間的間距非常緊密! 從正面插入導(dǎo)線并在背面焊接通常是最容易的。

如果使用鱷魚(yú)夾,我們建議先將短跨接線焊接到環(huán)輸入并連接夾子出于類(lèi)似的原因。(我們的一些教程和產(chǎn)品照片的確顯示了直接與環(huán)相連的鱷魚(yú)夾,但我們?cè)谑褂盟鼈兩嫌泻芏嘟?jīng)驗(yàn)。)

還有為微粒(以前稱(chēng)為Spark) Photon 開(kāi)發(fā)板專(zhuān)門(mén)設(shè)計(jì)的 24像素RGB 環(huán)。

這不是像其他“透明”一樣–中心的空間為光子板提供了一個(gè)插槽。

NeoPixel矩陣

NeoPixel矩陣是NeoPixels的二維網(wǎng)格,均由單個(gè)微控制器引腳控制。

剛性8x8 NeoPixel矩陣

與NeoPixel環(huán)一樣,這64個(gè)像素的矩陣也組裝在剛性印刷電路板上,并提供 RGB 和 RGBW 兩種版本。

NeoPixel Matrix產(chǎn)品選擇器

所有尺寸均為71毫米(2.8英寸)正方形,厚約3.6毫米。有多個(gè)安裝孔,并且DOUT引腳允許串聯(lián)連接多個(gè)矩陣。

RGB NeoPixels最便宜,可以產(chǎn)生百萬(wàn)種顏色組合。

RGBW NeoPixels除了提供RGB之外,還提供了令人賞心悅目的“真實(shí)”白色。有三種不同的色溫可供選擇:

冷白:大約 6000 開(kāi)爾文(K)。

中性:約 4500K 。

暖白:約 3000K 。

RGBW像素包含一個(gè)半透明的漫反射器層,以幫助混合和柔化光輸出。這使它們看起來(lái)強(qiáng)度不如RGB像素(“水透明”)強(qiáng),但是里面的LED確實(shí)相同。

靈活的NeoPixel矩陣

靈活的NeoPixel矩陣有三種不同的大?。?/p>

8x8 RGB像素

16x16 RGB像素

8x32 RGB像素

大小尺寸LED總數(shù) 最大功耗(大約)

8x880mm/3.15 “方形6419瓦(5伏時(shí)為3.8安培)

16x16160 mm/6.3“正方形25677瓦(5伏時(shí)為15安培)

8x32320毫米x 80毫米/12.6“ x 3” 25677瓦(5伏時(shí)為15安)

Flex矩陣的厚度約為2毫米(0.08英寸)。

不過(guò)這些矩陣稱(chēng)為“柔性”,這些矩陣不能承受連續(xù)和反復(fù)的彎曲?!翱沙尚巍笨赡苁且粋€(gè)更好的詞-它們可以圍繞諸如帽子之類(lèi)的剛性或半剛性形狀彎曲。反復(fù)彎曲(如在服裝上)將很快使焊料連接破裂。 (產(chǎn)品頁(yè)面上的視頻僅強(qiáng)調(diào)這些矩陣的靈活性,但這確實(shí)是“不要在家中嘗試”的東西。)

Flex矩陣僅適用于 RGB像素; 不提供RGBW。

關(guān)于NeoPixel矩陣的詳細(xì)信息

如NeoPixel Strips頁(yè)面上所述,在使用NeoPixel矩陣時(shí)請(qǐng)牢記功耗。

i》

如果需要此處未提供的大小或形狀的NeoPixel矩陣,則可以使用部分創(chuàng)建自己的 NeoPixel帶!

NeoPixel矩陣不強(qiáng)制執(zhí)行任何特定的“拓?fù)洹?一些像素行可能是從左到右排列的像素行,其他像素行可能是交替排列的-從右到右和從右到左的行,也可以將它們安裝在垂直列中。 這將需要對(duì)您的代碼進(jìn)行一些計(jì)劃。我們的 NeoMatrix 庫(kù)支持大多數(shù)矩陣拓?fù)洹?/p>

我們?cè)贜eoPixel Shields頁(yè)面上還有一些特殊用途的矩陣!

NeoPixel Shields

盡管并不是嚴(yán)格意義上的Arduino的所有“ Shields”,但仍有一些NeoPixel產(chǎn)品被設(shè)計(jì)為直接安裝在某些微控制器板上(或下面)。

適用于Arduino的NeoPixel Shield

用于Arduino的5x8 NeoPixel Shield 恰好適合放在頂部一個(gè)Arduino Uno或兼容板(推薦5V邏輯)。與我們的許多NeoPixel產(chǎn)品一樣,它們提供 RGB 和各種 RGBW 像素類(lèi)型:

NeoPixel Shield產(chǎn)品選擇器 》

默認(rèn)情況下,LED由Arduino的5V引腳供電。只要您不要以全亮度點(diǎn)亮所有像素就可以了。通過(guò)焊接隨附的端子塊或使用外部電源為屏蔽供電。

NeoPixel在數(shù)字引腳6 上進(jìn)行控制,但是通過(guò)一些靈巧的接線,您可以將其更改為任何引腳。

NeoPixel FeatherWing

很可能是可愛(ài)小東西歷史上最可愛(ài)的東西, NeoPixel FeatherWing 是4x8像素矩陣,可以完美地 容納在我們的 Feather 微控制器板上。

NeoPixels通常是由數(shù)字6針控制的,但是底部的焊盤(pán)使它可以重新分配。特別是,必須移動(dòng) Feather Huzzah ESP8266的默認(rèn)引腳,嘗試使用引腳#15!

NeoPixel Featherwing僅 RGB ;沒(méi)有RGBW版本。

Pimoroni獨(dú)角獸帽子

Pimoroni獨(dú)角獸帽子以神話(huà)中的動(dòng)物恰當(dāng)?shù)孛?通常我們會(huì)說(shuō)NeoPixels不能與Raspberry Pi一起使用,但是Pimoroni可以使用制作一些神奇的軟件,使這種結(jié)合成為可能!這是一個(gè)8x8 RGB矩陣,可以恰好適合Raspberry Pi Model A +,B +或Pi 2。

由于Unicorn HAT的工作方式,您無(wú)法在其旁邊使用Pi的模擬音頻。如果您看到奇怪的隨機(jī)顏色模式和閃爍,請(qǐng)確保已禁用模擬音頻。

Particle/Spark NeoPixel環(huán)形套件

以前在“環(huán)”頁(yè)面上提到過(guò),但后代:此 24像素RGB ring是專(zhuān)門(mén)為“粒子”(以前稱(chēng)為Spark) Photon 開(kāi)發(fā)板設(shè)計(jì)的。

其他NeoPixel形狀

NeoPixel Stick

最簡(jiǎn)單的事情……沿著剛性電路板排成一行的 8 NeoPixels 。像我們的戒指和矩陣一樣,這些是棒圖的指示器!

NeoPixel棒有 RGB 和 RGBW 品種。

NeoPixel棒產(chǎn)品選擇器

所有尺寸均為51.1 x 10.2毫米(2.0 x 0.4英寸)。

NeoPixel珠寶

當(dāng)您需要比單個(gè)NeoPixel所能提供的更多的“打孔”時(shí),這些 7像素珠寶可提供大量照明緊湊的形狀。再次提供 RGB 和 RGBW 品種。

NeoPixel珠寶產(chǎn)品選擇器

直徑均為23毫米(0.9英寸)。

1/4 60 NeoPixel戒指

盡管最初設(shè)計(jì)為四人一組以完成 60 NeoPixel環(huán),但單個(gè) 15像素四分之一環(huán) 也可以用于解決有趣的設(shè)計(jì)問(wèn)題! RGB 和 RGBW 可用。

NeoPixel環(huán)形產(chǎn)品選擇器

Side Light NeoPixel LED PCB Bar strong》

A 半米剛性PCB ,緊密包裝有 60 側(cè)光NeoPixels。這是一種奇怪的動(dòng)物,但可能只是緊湊的輕型繪畫(huà)項(xiàng)目或邊緣照明的標(biāo)牌所用。您會(huì)怎么做?

側(cè)燈NeoPixel LED PCB條-60個(gè)LED-120個(gè)LED/米-500mm長(zhǎng)

單個(gè)NeoPixels

如果您只需要少量像素……或者如果現(xiàn)成的形狀和條帶不能完全滿(mǎn)足您的需求……單個(gè)NeoPixels 提供對(duì)放置和數(shù)量的最大控制。

集成的NeoPixel產(chǎn)品

某些單獨(dú)的NeoPixel產(chǎn)品已準(zhǔn)備好使用,帶有一塊裝有LED的小型PCB,一個(gè)用于電源的去耦電容器,以及用于

Flora RGB Smart NeoPixels

原始的Adafruit NeoPixel尺寸! Flora RGB Smart NeoPixels 專(zhuān)為使用導(dǎo)電線的可穿戴項(xiàng)目而設(shè)計(jì),但也可以與電線正常焊接。這些有兩種格式:

一包4 ,可以按原樣使用。

20張紙 strong》,在需要時(shí)將它們剪下來(lái)并節(jié)省一點(diǎn)錢(qián)。

Flora RGB智能像素直徑約為12.5毫米(0.5英寸)。這些僅是 RGB ;沒(méi)有RGBW版本。

適合面包板的RGBSmartNeoPixels

這些類(lèi)似于可縫制的Flora NeoPixels,但帶有一個(gè)引腳排列(加上接頭)可整齊地插入面包板中以進(jìn)行原型制作。還提供兩種格式:

一包4 ,可以按原樣使用。

25張紙 》,根據(jù)需要切斷。

對(duì)于這兩種類(lèi)型,標(biāo)頭都是可選的,不包含。

適合面包板的NeoPixels尺寸為10.2 x 12.7毫米(0.4 x 0.5英寸),并且僅 RGB ;沒(méi)有RGBW版本。

NeoPixel迷你PCB

NeoPixel Mini PCB -以每包5包-是最小的即用型NeoPixel格式。

這些沒(méi)有安裝孔或焊接通孔…導(dǎo)線必須直接焊接到PCB背面的焊盤(pán)上。

每個(gè)直徑約為10毫米(0.3英寸)。這些僅是 RGB ;沒(méi)有RGBW版本。

離散NeoPixel產(chǎn)品

對(duì)于需要完全定制設(shè)計(jì)的高級(jí)用戶(hù),可以使用離散NeoPixel 組件。您需要提供自己的PCB和(取決于像素類(lèi)型)表面貼裝焊接技能。

我們強(qiáng)烈建議 ,每個(gè)NeoPixel都有一個(gè)隨附的附件。 + V和地之間的電容為0.1μF。這樣可以防止由于像素驅(qū)動(dòng)器邏輯不足而導(dǎo)致的通信問(wèn)題。偶爾在成對(duì)的像素之間插入一個(gè) 個(gè)電容器 足夠了;我們的某些NeoPixel戒指可以這樣工作。

穿透式NeoPixels

離散通孔NeoPixels 有兩種尺寸:

8mm Diffused (5包)

5mm Diffused –每包5張。

5mm透明已經(jīng)停產(chǎn),但是如果您需要引腳說(shuō)明,產(chǎn)品頁(yè)面仍然可用。

通孔NeoPixels僅 RGB ;沒(méi)有RGBW版本。強(qiáng)烈建議在每個(gè)像素的+和地面之間使用0.1μF電容。

SMT NeoPixels

表面貼裝“ 5050”(5毫米方形)NeoPixels是可用的品種很多:

5050 RGB LED – 10件裝。

RGBW NeoPixel –冷白色–白色外殼-每包10個(gè)。

RGBW NeoPixel –中性白–白色案例 –每包10個(gè)。

RGBW NeoPixel –暖白–白色案例-每包10張。

RGBW NeoPixel –冷白–黑盒 –每包10張。

RGBW Ne oPixel – NeutralWhite–黑盒 – 10件裝。

RGBW NeoPixel – WarmWhite–黑盒 – 10件裝。

NeoPixel –冷白(3倍白,無(wú)RGB)–每包10張。

NeoPixel –暖白(3倍白,無(wú)RGB)–每包10張。/li》

全部為5毫米見(jiàn)方。建議為每個(gè)像素在+和地面之間添加一個(gè) 0.1 F電容。

白色和黑色外殼的像素在功能上是相同的;這純粹是您設(shè)計(jì)的美學(xué)選擇。

“冷白”的尺寸約為6000開(kāi)爾文。 “中性白”約為4500K。 “暖白色”約為3000K。

微型表面貼裝“ 3535 ”(3.5毫米見(jiàn)方)NeoPixels有兩種 RGB 版本;沒(méi)有RGBW。

NeoPixel Mini 3535 RGB –白色外殼 – 10件裝。

NeoPixel Mini 3535 RGB –黑色案例 –建議裝10包。

去耦電容器。與“ 5050” NeoPixels一樣,白色和黑色外殼版本在功能上相同,這是一種美學(xué)設(shè)計(jì)選項(xiàng)。

WS2811驅(qū)動(dòng)程序集成電路

NeoPixel驅(qū)動(dòng)器邏輯可從LED單獨(dú)獲得,允許電源用戶(hù)創(chuàng)建極其定制的設(shè)計(jì)……也許使用其他LED顏色,或者與功率MOSFET結(jié)合使用NeoPixel協(xié)議來(lái)控制大電流LED或“模擬” RGB LED條。

這些要求電路設(shè)計(jì)技巧,定制PCB和精細(xì)的表面貼裝焊接。建議為每個(gè)芯片使用0.1 uF的去耦電容。

Arduino庫(kù)安裝

“從頭開(kāi)始”控制NeoPixels是一個(gè)挑戰(zhàn),因此我們提供了一個(gè)庫(kù),讓您專(zhuān)注于有趣和有趣的部分。該庫(kù)可與大多數(shù)主流Arduino開(kāi)發(fā)板及其衍生產(chǎn)品一起使用:Uno,Mega,Leonardo,Micro,Adafruit Flora等-多數(shù)與8至16 MHz的Atmel AVR 8位處理器一起使用的任何東西-還可與Arduino Due和所有

由于使用了特定于處理器的匯編語(yǔ)言,因此該庫(kù)在Netduino,ChipKIT或其他高級(jí)“類(lèi)似Arduino的”板上不起作用。其他人可能已經(jīng)編寫(xiě)了代碼以及此類(lèi)板的庫(kù),但我們無(wú)法為您可能在此處遇到的任何錯(cuò)誤或麻煩提供技術(shù)支持;這是一些前沿的工程。其中一些替代庫(kù)位于“高級(jí)編碼”部分。

通過(guò)庫(kù)管理器安裝Adafruit_NeoPixel

最新版本的Arduino IDE(1.6.2及更高版本)使通過(guò)庫(kù)管理器界面的庫(kù)安裝超級(jí)容易。在草圖菜單中,》 包括庫(kù)》 管理庫(kù) 。..在文本輸入框中,鍵入“ NeoPixel 》”。查找“ Adafruit提供的Adafruit NeoPixel ”,然后通過(guò)單擊安裝按鈕旁邊的彈出菜單來(lái)選擇最新版本。然后點(diǎn)擊安裝按鈕。安裝完成后,您可以點(diǎn)擊“ 關(guān)閉”按鈕。

手動(dòng)安裝Adafruit_NeoPixel庫(kù)

如果您使用的是舊版IDE,或者只是想手動(dòng)設(shè)置,則該庫(kù)的“經(jīng)典”安裝如下:您可以訪問(wèn)Github上的Adafruit_NeoPixel庫(kù)頁(yè)面,然后從那里下載,或只需單擊此按鈕:

為Arduino下載Adafruit_NeoPixel

在完成下載后解壓縮ZIP文件。

生成的文件夾應(yīng)包含文件 Adafruit_NeoPixel.cpp , Adafruit_NeoPixel.h 和“ 示例”子文件夾。有時(shí)在Windows中,您會(huì)得到一個(gè)中級(jí)文件夾,并且需要四處移動(dòng)。

將文件夾(包含.cpp和.h文件)重命名為 Adafruit_NeoPixel (下劃線和所有內(nèi)容),然后將其與其他Arduino庫(kù)一起放置,通常放置在(主文件夾)/Documents/Arduino/Libraries文件夾中。應(yīng)該永遠(yuǎn)不要將庫(kù) 安裝在Arduino應(yīng)用程序旁邊的“ Libraries”文件夾中……將它們放在主文件夾的子目錄中。

如果當(dāng)前是Arduino IDE,請(qǐng)重新啟動(dòng)

這是一個(gè)教程,它逐步指導(dǎo)了手動(dòng)正確安裝Arduino庫(kù)的過(guò)程。

一個(gè)簡(jiǎn)單的代碼示例:strandtest

啟動(dòng)Arduino IDE。從文件菜單中,選擇速寫(xiě)本 → 庫(kù) → Adafruit_NeoPixel → strandtest

(如果Adafruit_NeoPixel過(guò)渡菜單不存在,則說(shuō)明庫(kù)未正確安裝,或者安裝后需要重新啟動(dòng)IDE。請(qǐng)檢查上述安裝步驟,以確認(rèn)其正確命名和位置。)

從工具菜單中選擇您的主板類(lèi)型和串行端口,然后嘗試上傳到主板。如果NeoPixels如前所述已連接并已供電,您應(yīng)該會(huì)看到一點(diǎn)燈光。

沒(méi)有任何反應(yīng)!

檢查您的連接。最常見(jiàn)的錯(cuò)誤是連接到測(cè)試條的輸出端而不是輸入。

發(fā)生了什么,但是LED閃爍著奇怪的聲音!

如果您使用的是RGBW NeoPixel產(chǎn)品(看一下LED,它們是否分開(kāi)了?

更改此行:

Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_RGBW + NEO_KHZ800);

并重新上載測(cè)試鏈?zhǔn)纠?/p>

我沒(méi)有RGBW LED且LED仍在閃爍

99%的時(shí)間是由于沒(méi)有共享接地線已連接至Arduino。確保來(lái)自Neopixels的地線連接到您的電源地線和 Arduino地線。

Arduino庫(kù)的使用

有關(guān)Adafruit_NeoPixel庫(kù)的Doxygen生成的文檔,請(qǐng)參見(jiàn)此處。

目前假設(shè)您已安裝Arduino的Adafruit_NeoPixel庫(kù)并成功運(yùn)行了strandtest示例草圖。如果沒(méi)有,請(qǐng)返回上一頁(yè)以獲取設(shè)置方向的指導(dǎo)。

要了解有關(guān)編寫(xiě)自己的NeoPixel草圖的信息,請(qǐng)先剖析最粗的草圖 。..

所有NeoPixel草圖首先包括頭文件:

下載:文件

復(fù)制代碼

#include #include

后面的代碼塊主要是描述性注釋。實(shí)際上只有幾行代碼在做任何工作:

下載:文件

復(fù)制代碼

// Which pin on the Arduino is connected to the NeoPixels?

// On a Trinket or Gemma we suggest changing this to 1:

#define LED_PIN 6

// How many NeoPixels are attached to the Arduino?

#define LED_COUNT 60

// Declare our NeoPixel strip object:

Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

// Argument 1 = Number of pixels in NeoPixel strip

// Argument 2 = Arduino pin number (most are valid)

// Argument 3 = Pixel type flags, add together as needed:

// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)

// NEO_KHZ400 400 KHz (classic ‘v1’ (not v2) FLORA pixels, WS2811 drivers)

// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)

// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)

// NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products) // Which pin on the Arduino is connected to the NeoPixels?

// On a Trinket or Gemma we suggest changing this to 1:

#define LED_PIN 6

// How many NeoPixels are attached to the Arduino?

#define LED_COUNT 60

// Declare our NeoPixel strip object:

Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

// Argument 1 = Number of pixels in NeoPixel strip

// Argument 2 = Arduino pin number (most are valid)

// Argument 3 = Pixel type flags, add together as needed:

// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)

// NEO_KHZ400 400 KHz (classic ‘v1’ (not v2) FLORA pixels, WS2811 drivers)

// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)

// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)

// NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products)

前幾行將數(shù)字分配給符號(hào)“ LED_PIN”和“ LED_COUNT”,以供以后參考。 不需要以這種方式完成,但是可以更輕松地更改NeoPixel連接的引腳和長(zhǎng)度,而無(wú)需深入研究代碼。

最后一行聲明NeoPixel object。我們稍后將通過(guò)名稱(chēng)來(lái)引用它以控制像素帶。括號(hào)中有三個(gè)參數(shù)或自變量:

試條中連續(xù)NeoPixel的數(shù)量。在此示例中,將其設(shè)置為L(zhǎng)ED_COUNT(在上面定義為60),等于1米的中密度條帶。更改此值以匹配您正在使用的實(shí)際編號(hào)。

與NeoPixel條(或其他設(shè)備)連接的引腳號(hào)。通常,這將是一個(gè)數(shù)字,但我們之前已聲明符號(hào) LED_PIN 在此處通過(guò)名稱(chēng)進(jìn)行引用。

一個(gè)值,指示所連接的NeoPixel的類(lèi)型。 在大多數(shù)情況下,您可以將其保留,僅傳遞兩個(gè)參數(shù); 示例代碼僅具有額外的描述性。如果您提供經(jīng)典的“ V1”植物群像素,則需要 NEO_KHZ400 + NEO_RGB 才能在此處傳遞。 RGBW NeoPixels在這里也需要一個(gè)不同的值:NEO_RGBW。

通孔8mm NeoPixels,在條聲明中使用NEO_RGB代替NEO_GRB。對(duì)于RGBW LED,請(qǐng)使用NEO_RGBW(某些RGBW燈條使用NEO_GRBW,因此,如果您得到意想不到的結(jié)果,請(qǐng)嘗試?。?/p>

然后在 setup()函數(shù),調(diào)用 begin()為NeoPixel輸出準(zhǔn)備數(shù)據(jù)引腳:

i》下載:文件

復(fù)制代碼

void setup() {

strip.begin();

strip.show(); // Initialize all pixels to ‘off’

} void setup() {

strip.begin();

strip.show(); // Initialize all pixels to ‘off’

}

第二行, strip.show(),不是絕對(duì)必要的,只是要徹底。該功能將數(shù)據(jù)推送到像素…由于尚未設(shè)置顏色,因此如果某些顏色被先前的程序照亮,則它將所有NeoPixels初始化為初始“關(guān)閉”狀態(tài)。

Adafruit Trinket 5V 16 MHz板需要一些額外的設(shè)置。您可以在“ strandtest”示例草圖中看到所需的步驟。

在strandtest示例中, loop()并不自行設(shè)置任何像素顏色-它調(diào)用創(chuàng)建動(dòng)畫(huà)效果的其他功能。因此,讓我們暫時(shí)忽略它,并在各個(gè)功能內(nèi)進(jìn)行展望,看看如何控制條帶。

有兩種不同的方法可以設(shè)置像素的顏色。第一個(gè)是:

下載:文件

復(fù)制代碼

strip.setPixelColor(n, red, green, blue); strip.setPixelColor(n, red, green, blue);

,或者,如果您使用的是RGBW燈條:

下載:文件

復(fù)制代碼

strip.setPixelColor(n, red, green, blue, white); strip.setPixelColor(n, red, green, blue, white);

第一個(gè)參數(shù)—在本示例中為n —是條帶上的像素?cái)?shù),從最接近Arduino的0開(kāi)始。如果您有30像素的小條,則它們的編號(hào)為0到29。這是計(jì)算機(jī)的事情。您將使用for循環(huán)在代碼中看到多個(gè)位置,將循環(huán)計(jì)數(shù)器變量作為像素?cái)?shù)傳遞給此函數(shù),以設(shè)置多個(gè)像素的值。

接下來(lái)的三個(gè)參數(shù)是像素顏色,表示為紅色,綠色和藍(lán)色亮度級(jí)別,其中0是最暗(關(guān)閉),而255是最大亮度。最后一個(gè) optional 參數(shù)用于白色,僅在創(chuàng)建時(shí)將條定義為RGBW類(lèi)型且該條實(shí)際上是RGBW類(lèi)型時(shí)才使用。

要將第12個(gè)像素(#11,從0開(kāi)始計(jì)數(shù))設(shè)置為品紅色(紅色+藍(lán)色),您可以編寫(xiě):

下載:文件

復(fù)制代碼

strip.setPixelColor(11, 255, 0, 255); strip.setPixelColor(11, 255, 0, 255);

設(shè)置第8個(gè)像素(#7從0開(kāi)始計(jì)數(shù))到半亮度白色(帶有RGBW條紋),沒(méi)有紅色/綠色/藍(lán)色的光線,請(qǐng)使用:

下載:文件

復(fù)制代碼

strip.setPixelColor(7, 0, 0, 0, 127); strip.setPixelColor(7, 0, 0, 0, 127);

兩個(gè)參數(shù):

下載:文件

復(fù)制代碼

strip.setPixelColor(n, color); strip.setPixelColor(n, color);

在這里,顏色是一種32位類(lèi)型,將紅色,綠色和藍(lán)色值合并為一個(gè)數(shù)字。對(duì)于某些(但不是全部)程序而言,這有時(shí)更容易或更快速;您會(huì)看到strandtest代碼在不同的地方使用了兩種語(yǔ)法。

您還可以將單獨(dú)的紅色,綠色和藍(lán)色值轉(zhuǎn)換為單個(gè)32位類(lèi)型以供以后使用:

下載:文件

復(fù)制代碼

uint32_t magenta = strip.Color(255, 0, 255); uint32_t magenta = strip.Color(255, 0, 255);

然后,您可以?xún)H將“洋紅色”作為參數(shù)傳遞給setPixelColor,而不是每次都使用單獨(dú)的紅色,綠色和藍(lán)色數(shù)字。

您還可以(可選)在以下位置向顏色添加白色成分最后,像這樣:

下載:文件

復(fù)制代碼

uint32_t greenishwhite = strip.Color(0, 64, 0, 64); uint32_t greenishwhite = strip.Color(0, 64, 0, 64);

setPixelColor()不會(huì)立即影響LED。要將顏色數(shù)據(jù)“推送”到測(cè)試條,請(qǐng)調(diào)用 show():

下載:文件

復(fù)制代碼

strip.show(); strip.show();

,這會(huì)立即更新整個(gè)條帶,并盡管采取了額外的步驟實(shí)際上是一件好事。如果每次對(duì) setPixelColor()的調(diào)用都立即生效,則動(dòng)畫(huà)將顯得跳動(dòng)而不是黃油般平滑。

可以將多個(gè)像素設(shè)置為相同的顏色使用fill()函數(shù),該函數(shù)接受一到三個(gè)參數(shù)。通常這樣稱(chēng)呼:

下載:文件

復(fù)制代碼

strip.fill(color, first, count); strip.fill(color, first, count);

“顏色”是打包的32位RGB(或RGBW)顏色值,可能由strip.Color()返回。這里沒(méi)有單獨(dú)的紅色,綠色和藍(lán)色選項(xiàng),因此請(qǐng)調(diào)用Color()函數(shù)將它們打包為一個(gè)值。

“第一個(gè)”是要填充的第一個(gè)像素的索引,其中0是條中的第一個(gè)像素,strip.numPixels()-1是最后一個(gè)像素。必須為正值或0。

“計(jì)數(shù)”是要填充的像素?cái)?shù)。必須為正值。

如果不帶 count 參數(shù)(僅顏色和第一個(gè))調(diào)用,則從 first 到條帶末尾

如果不帶 first 或 count 參數(shù)(僅顏色)調(diào)用,則整個(gè)條帶將設(shè)置為所需的顏色。

如果使用 no 參數(shù)調(diào)用,則條帶將被填充為黑色或“ off”,但是還有另一種語(yǔ)法可能更易于閱讀:

下載:文件

復(fù)制代碼

strip.clear(); strip.clear();

您可以使用 getPixelColor()查詢(xún)預(yù)先設(shè)置的像素的顏色:

下載:文件

復(fù)制代碼

uint32_t color = strip.getPixelColor(11); uint32_t color = strip.getPixelColor(11);

這將返回32位合并的RGB顏色值。即使使用了“ ColorHSV()”函數(shù)(如下所述),這也是始終為RGB 。

先前聲明的條中的像素?cái)?shù)可以使用 numPixels()進(jìn)行查詢(xún):

下載:文件

復(fù)制代碼

uint16_t n = strip.numPixels(); uint16_t n = strip.numPixels();

可以使用 setBrightness()調(diào)整所有LED的整體亮度。這只需要一個(gè)參數(shù),范圍在 0 (關(guān)閉)到 255 (最大亮度)之間。例如,要將條帶設(shè)置為1/4亮度:

下載:文件

復(fù)制代碼

strip.setBrightness(64); strip.setBrightness(64);

就像setPixel()一樣,這沒(méi)有立竿見(jiàn)影的效果。您需要

setBrightness()旨在在setup()中一次被稱(chēng)為 ,以限制當(dāng)前整個(gè)素描過(guò)程中,LED的亮度/亮度。它本身不是 動(dòng)畫(huà)效果!此功能的操作是“有損的”-它修改RAM中的當(dāng)前像素?cái)?shù)據(jù),而不是show()調(diào)用中的-以滿(mǎn)足NeoPixels嚴(yán)格的時(shí)序要求。通過(guò)將亮度設(shè)置保持為默認(rèn)最大值,在您自己的草圖邏輯中調(diào)制像素亮度并使用setPixel()重繪整個(gè)條帶,可以更好地實(shí)現(xiàn)某些動(dòng)畫(huà)效果。

HSV(色相飽和度值)顏色……

NeoPixel庫(kù)在其中支持某些顏色“ HSV”(色相飽和度值)色彩空間。與通常的RGB(紅-綠-藍(lán))不同,這是一種指定顏色的方式。有些人覺(jué)得思考起來(lái)更容易或更“自然”……或者,對(duì)于某些色彩效果(流行的彩虹周期等),它往往更容易。

在NeoPixel庫(kù)中, 色相 表示為 16位數(shù)字。從紅色開(kāi)始,從0開(kāi)始,依次遞增為黃色(大約65536/6,或10922取一點(diǎn)),然后依次通過(guò)綠色,青色(在32768的中點(diǎn)),藍(lán)色,洋紅色并返回紅色。在您自己的代碼中,您可以允許任何與色相相關(guān)的變量 overflow 或 underflow ,它們將“環(huán)繞”并做正確且可預(yù)期的事情,這非常好。

飽和度 確定顏色的強(qiáng)度或純度…這是一個(gè) 8位的數(shù)字,范圍為0(無(wú)飽和度,僅灰度)到255(最大飽和度,純色)。在中間,您將開(kāi)始獲得柔和的色調(diào)。

值 確定顏色的亮度……它也是 8位,范圍從0(黑色,不考慮色相或飽和度)到255(最大亮度)。

盡管

setPixelColor()和fill()仍然仍然需要 RGB 值,所以我們可以通過(guò)使用ColorHSV()函數(shù)從HSV 轉(zhuǎn)換這些值:

下載:文件

復(fù)制代碼

uint32_t rgbcolor = strip.ColorHSV(hue, saturation, value); uint32_t rgbcolor = strip.ColorHSV(hue, saturation, value);

如果只需要“純色”(完全飽和和全亮度),則可以省略后兩個(gè)參數(shù):

下載:文件

復(fù)制代碼

uint32_t rgbcolor = strip.ColorHSV(hue); uint32_t rgbcolor = strip.ColorHSV(hue);

在兩種情況下,都可以將所得的RGB值傳遞給像素設(shè)置功能,例如:

下載:文件

復(fù)制代碼

strip.fill(rgbcolor); strip.fill(rgbcolor);

沒(méi)有否相應(yīng)的功能,從RGB到HSV。這是有目的的并且是有意設(shè)計(jì)的,因?yàn)樵谠摲较蛏系霓D(zhuǎn)換通常是模棱兩可的-給定輸入可能有多種有效的可能性。如果您查看一些示例草圖,您會(huì)發(fā)現(xiàn)它們跟蹤自己的色調(diào)…他們不為像素分配顏色,然后嘗試將其讀回

…和伽瑪校正

在進(jìn)行更細(xì)微的顏色變化時(shí),您可能會(huì)發(fā)現(xiàn)有些東西可能看起來(lái)太亮或褪色。通常,對(duì)于簡(jiǎn)單的原色和中間色來(lái)說(shuō),這不是問(wèn)題,但對(duì)于混合,過(guò)渡,以及您可以從ColorHSV()函數(shù)獲得的各種柔和顏色。 數(shù)值顏色值是正確的,但在感知上我們的眼睛對(duì)此有所不同,如本指南中所述。

gamma32()函數(shù)需要打包的RGB值(可能會(huì)脫離Color()或ColorHSV())并過(guò)濾結(jié)果以使其在感知上更正確。

下載:文件

復(fù)制代碼

uint32_t rgbcolor = strip.gamma32(strip.ColorHSV(hue, sat, val)); uint32_t rgbcolor = strip.gamma32(strip.ColorHSV(hue, sat, val));

設(shè)置像素顏色之前,我們絕不使用strandtest和其他示例草圖,我們絕不使用ColorHSV() 將結(jié)果通過(guò)gamma32()傳遞。

但是,由于某些原因(包括高級(jí)程序員),gamma32操作不是在ColorHSV()中內(nèi)置的(必須被稱(chēng)為單獨(dú)的操作)??赡芟胩峁┳约涸O(shè)計(jì)的更具體的色彩校正功能(gamma32()是“一種尺寸最適合”近似值),或者可能需要保持原始的“在數(shù)字上但在視覺(jué)上不是正確的”數(shù)字。

沒(méi)有相應(yīng)的反向操作。當(dāng)您將像素設(shè)置為通過(guò)gamma32()過(guò)濾的顏色時(shí),回讀像素值會(huì)產(chǎn)生過(guò)濾后的顏色,不是原始RGB值。正是由于這種抽取,高級(jí)NeoPixel程序經(jīng)常將像素緩沖區(qū)視為只寫(xiě)資源…它們會(huì)根據(jù)自己的程序狀態(tài)生成每個(gè)完整的動(dòng)畫(huà)幀,而 not 作為一系列讀寫(xiě)修改操作。

幫助!

我正在調(diào)用setPixel(),但是什么也沒(méi)發(fā)生!

主要有兩個(gè)原因:

忘記在 setup()中調(diào)用 strip.begin() 。

忘記設(shè)置像素顏色后調(diào)用 strip.show()。

另一種(較不常見(jiàn))的可能性即將耗盡RAM —請(qǐng)參閱下面的最后一節(jié)。如果程序各種各樣的可以工作,但是結(jié)果無(wú)法預(yù)測(cè),請(qǐng)考慮一下。

我可以在不同的引腳上有多個(gè)NeoPixel對(duì)象嗎?

當(dāng)然!每個(gè)文件都需要有自己的唯一名稱(chēng)聲明:

下載:文件

復(fù)制代碼

Adafruit_NeoPixel strip_a = Adafruit_NeoPixel(16, 5);

Adafruit_NeoPixel strip_b = Adafruit_NeoPixel(16, 6); Adafruit_NeoPixel strip_a = Adafruit_NeoPixel(16, 5);

Adafruit_NeoPixel strip_b = Adafruit_NeoPixel(16, 6);

上面聲明了兩個(gè)不同的NeoPixel對(duì)象,每個(gè)對(duì)象分別位于引腳5和6上,每個(gè)對(duì)象包含16個(gè)像素,并使用隱式默認(rèn)類(lèi)型( NEO_KHZ800 + NEO_GRB )。

我可以將多個(gè)NeoPixel帶連接到同一Arduino引腳嗎?

在很多情況下,是的。然后,所有小條將顯示完全相同的內(nèi)容。盡管這樣做只能起到一定的作用……單個(gè)引腳上的四個(gè)帶是一個(gè)很好且可靠的數(shù)字。如果您還需要更多,則可以將單個(gè)NeoPixels用作緩沖區(qū)以“扇出”更多條帶:將一個(gè)Arduino引腳連接到四個(gè)單獨(dú)NeoPixel的輸入,然后將每個(gè)像素的輸出連接到四個(gè)條帶的輸入(或更少) ,如果您不需要那么多)。如果條帶長(zhǎng)為10像素,則將NeoPixel對(duì)象聲明為具有11像素。多余的“緩沖區(qū)”像素將在位置0處-只需將其關(guān)閉即可-然后,條帶將從位置1到10開(kāi)始運(yùn)行。

我是顏色錯(cuò)誤。紅色和藍(lán)色被交換!

使用通孔8mm NeoPixels(或V1 Flora像素)時(shí)),將NEO_RGB用作Adafruit_NeoPixel聲明中的第三個(gè)參數(shù)。對(duì)于所有其他類(lèi)型的NeoPixels,請(qǐng)使用NEO_GRB。

當(dāng)我重復(fù)使用setBrightness()時(shí),顏色會(huì)散開(kāi)!

請(qǐng)參見(jiàn)上面的注釋?zhuān)?setBrightness()被設(shè)計(jì)為一次性設(shè)置功能,而不是動(dòng)畫(huà)效果。

另請(qǐng)參見(jiàn)“高級(jí)編碼”頁(yè)面-還有一個(gè)替代庫(kù),其中包括“無(wú)損”亮度調(diào)節(jié)以及其他功能! p》

Pixels Gobble RAM :每個(gè)NeoPixel大約需要3個(gè)字節(jié)的RAM。這聽(tīng)起來(lái)似乎不是很多,但是當(dāng)您開(kāi)始使用數(shù)十個(gè)甚至數(shù)百個(gè)像素時(shí),考慮到主流Arduino Uno只有2 KB的RAM(在其他庫(kù)提出主張后,其內(nèi)存通常要少得多),這可能是一個(gè)錯(cuò)誤。真正的問(wèn)題!

要使用大量的LED,您可能需要升級(jí)到更強(qiáng)大的電路板,例如Arduino Mega或Due。但是,如果您靠近并且只需要一點(diǎn)額外的空間,則有時(shí)可以調(diào)整代碼以提高RAM效率。本教程對(duì)內(nèi)存使用情況有一些提示。

NeoMatrix庫(kù)

Adafruit_NeoMatrix庫(kù)基于Adafruit_NeoPixel創(chuàng)建,以使用NeoPixels創(chuàng)建二維圖形顯示。然后,您可以輕松繪制形狀,文本和動(dòng)畫(huà),而不必計(jì)算每個(gè)X/Y像素位置。商店提供小型NeoPixel矩陣。如上圖所示,可以使用NeoPixel條帶的部分來(lái)形成更大的顯示器。

除了Adafruit_NeoPixel庫(kù)(已在先前步驟中下載并安裝)之外,NeoMatrix還需要兩個(gè)庫(kù):

Adafruit_NeoMatrix

Adafruit_GFX

如果您以前使用過(guò)任何Adafruit LCD或OLED顯示器,則可能已經(jīng)安裝了后者的庫(kù)。

兩者的安裝之前與Adafruit_NeoPixel相似:解壓縮,確保文件夾名稱(chēng)與其中的.cpp和.h文件匹配,然后移至Arduino庫(kù)文件夾并重新啟動(dòng)IDE。

Arduino草圖需要包含這三個(gè)標(biāo)頭只是為了使用該庫(kù):

下載:文件

復(fù)制代碼

#include

#include

#include #include

#include

#include

布局 Adafruit_NeoMatrix使用完全相同的坐標(biāo)系,顏色函數(shù)和圖形mmands作為Adafruit_GFX庫(kù)。如果您不熟悉后者,則可以通過(guò)單獨(dú)的教程說(shuō)明其用法。 Adafruit_NeoMatrix庫(kù)中還包含示例草圖。

在這里,我們僅關(guān)注構(gòu)造器-如何聲明由NeoPixels制成的二維顯示。為野獸供電是另一回事,在上一頁(yè)中進(jìn)行了介紹。

該庫(kù)處理單個(gè)矩陣(所有NeoPixel都在一個(gè)統(tǒng)一的網(wǎng)格中)和 tiled 矩陣-多個(gè)網(wǎng)格組合成一個(gè)更大的顯示:

讓我們從聲明單個(gè)矩陣開(kāi)始,因?yàn)樗容^容易解釋。在這種情況下,我們將展示適用于Arduino的NeoPixel Shield-NeoPixels的8x5矩陣。當(dāng)以可讀的方向看這個(gè)盾牌時(shí),第一個(gè)像素#0位于左上方。每個(gè)連續(xù)的像素都在一個(gè)位置的右邊,像素1直接在像素0的右邊,依此類(lèi)推。在每一行的末尾,下一個(gè)像素位于下一行的左側(cè)。這不是我們?cè)诖a中決定的事情……這是NeoPixels如何在包含屏蔽的電路板上硬接線。

我們將此布局稱(chēng)為 row major 和 progressive。 Row major 表示像素以水平線排列(相反,垂直線為 column major )。 Progressive 表示每一行都沿相同方向前進(jìn)。一些矩陣會(huì)在每行上反轉(zhuǎn)方向,因?yàn)檫@樣連接起來(lái)會(huì)更容易。我們稱(chēng)其為 zigzag 布局。

但是,在此示例中,我們希望沿“豎直”方向使用屏蔽,因此Arduino通過(guò)USB電纜位于桌面上頂端。當(dāng)我們以這種方式打開(kāi)電路板時(shí),矩陣布局會(huì)發(fā)生變化……

現(xiàn)在,第一個(gè)像素位于右上方。像素從上到下遞增-現(xiàn)在是專(zhuān)業(yè)欄。列的順序仍然是漸進(jìn)式。

我們以此聲明矩陣:

下載:文件

復(fù)制代碼

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(5, 8, 6,

NEO_MATRIX_TOP + NEO_MATRIX_RIGHT +

NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE,

NEO_GRB + NEO_KHZ800); Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(5, 8, 6,

NEO_MATRIX_TOP + NEO_MATRIX_RIGHT +

NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE,

NEO_GRB + NEO_KHZ800);

前兩個(gè)參數(shù)-5和8-是寬度和高度矩陣的像素?cái)?shù)。第三個(gè)參數(shù)6是NeoPixels連接到的引腳號(hào)。在屏蔽層上,這是硬連線至數(shù)字引腳6,但是獨(dú)立矩陣可以自由使用其他引腳。

下一個(gè)論點(diǎn)是有趣的。這表明矩陣中第一個(gè)像素的位置以及行或列的排列。第一個(gè)像素必須位于四個(gè)角之一;通過(guò)將 NEO_MATRIX_TOP 或 NEO_MATRIX_BOTTOM 添加到 NEO_MATRIX_LEFT 或 NEO_MATRIX_RIGHT 。通過(guò)將 NEO_MATRIX_COLUMNS 或 NEO_MATRIX_ROWS 添加到 NEO_MATRIX_PROGRESSIVE 或 NEO_MATRIX_ZIGZAG 中來(lái)指示行/列的排列。這些值都按上述代碼添加為一個(gè)值。

NEO_MATRIX_TOP + NEO_MATRIX_RIGHT + NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE

最后一個(gè)參數(shù)與NeoPixel庫(kù)完全相同,指示使用的LED像素的類(lèi)型。在大多數(shù)使用最新NeoPixel產(chǎn)品的情況下,您可以簡(jiǎn)單地忽略此參數(shù)……示例代碼只是具有更多描述性。

此設(shè)置的要點(diǎn)是,草圖的其余部分無(wú)需思考關(guān)于矩陣的布局。不管第一個(gè)NeoPixel的實(shí)際位置如何,繪圖圖形的坐標(biāo)(0,0)總是 位于左上角。

Adafruit_GFX僅可處理旋轉(zhuǎn)。盡管它可以處理上面的示例,但是它并沒(méi)有涵蓋某些矩陣布局可能發(fā)生的旋轉(zhuǎn)和鏡像的所有排列,更不用說(shuō)之字形功能或此后的其他功能了……

平鋪矩陣一個(gè) tiled 矩陣由多個(gè)較小的NeoPixel矩陣組成。有時(shí)這更易于組裝或分配電源。所有子矩陣都必須具有相同的大小,并且必須以可預(yù)測(cè)的方式進(jìn)行排序。然后, Adafruit_NeoMatrix()構(gòu)造函數(shù)將接收一些附加參數(shù):

下載:文件

復(fù)制代碼

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(

matrixWidth, matrixHeight, tilesX, tilesY, pin, matrixType, ledType); Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(

matrixWidth, matrixHeight, tilesX, tilesY, pin, matrixType, ledType);

前兩個(gè)參數(shù)是每個(gè)對(duì)子矩陣進(jìn)行平鋪,而不對(duì)整個(gè)顯示進(jìn)行平鋪。

接下來(lái)的兩個(gè)參數(shù)是水平和垂直方向上的平鋪數(shù)目。這樣,整個(gè)顯示器的尺寸將始終是子矩陣尺寸的倍數(shù)。

第五個(gè)參數(shù)是引腳號(hào),與之前和NeoPixel庫(kù)相同。最后一個(gè)參數(shù)也遵循先前的行為,并且在大多數(shù)情況下可以忽略。

倒數(shù)第二個(gè)參數(shù)……這變得很復(fù)雜……

對(duì)于單個(gè)矩陣,有一個(gè)起始角,一個(gè)主軸(行或列)和行順序(逐行或之字形)?,F(xiàn)在已翻倍-對(duì)于單個(gè)圖塊內(nèi)的像素順序,和都需要類(lèi)似的信息,同時(shí)和在顯示中圖塊的整體布置。和以前一樣,我們添加一個(gè)符號(hào)列表以產(chǎn)生一個(gè)描述顯示格式的參數(shù)。

NEO_MATRIX _ * 符號(hào)的作用與之前的單矩陣情況相同,現(xiàn)在參考整體顯示中的各個(gè)子矩陣。所有圖塊必須遵循相同的格式。另一組符號(hào)的工作方式類(lèi)似,然后描述了圖塊的順序。

第一個(gè)圖塊必須位于四個(gè)角之一。添加 NEO_TILE_TOP 或 NEO_TILE_BOTTOM 和 NEO_TILE_LEFT 或 NEO_TILE_RIGHT 來(lái)指示第一個(gè)圖塊的位置。這與圖塊中第一個(gè)像素的位置無(wú)關(guān)。它們可以是不同的角。

標(biāo)題可以水平排列或垂直排列。同樣,這與圖塊中的像素順序無(wú)關(guān)。添加 NEO_TILE_ROWS 或 NEO_TILE_COLUMNS 。

最后,圖塊的行或列可以按漸進(jìn)或Z字形排列;也就是說(shuō),每一行或每一列都以相同順序進(jìn)行,或者交替的行/列切換方向。添加 NEO_TILE_PROGRESSIVE 或 NEO_TILE_ZIGZAG 來(lái)指示順序。 但…如果選擇了 NEO_TILE_ZIGZAG 順序,則瓷磚的交替線必須旋轉(zhuǎn)180度。這是有意設(shè)計(jì)的;它使平鋪間的布線更加一致和簡(jiǎn)單。 NEO_TILE_PROGRESSIVE 不需要旋轉(zhuǎn)。

標(biāo)題不必為正方形!以上只是一種可能的布局。此頁(yè)面頂部顯示的內(nèi)容是由NeoPixel條帶組裝而成的三個(gè)10x8瓦片。一旦定義了矩陣,項(xiàng)目的其余部分與Adafruit_NeoPixel相似。記住在繪圖后使用 setup()函數(shù)中的 matrix.begin()和 matrix.show()來(lái)更新顯示。 setBrightness()函數(shù)也可用。該庫(kù)包含幾個(gè)示例草圖供參考。

其他布局對(duì)于其他未均勻平鋪的情況,您可以提供自己的功能,以將X/Y坐標(biāo)重新映射到NeoPixel帶索引。此函數(shù)應(yīng)接受兩個(gè)無(wú)符號(hào)的16位參數(shù)(像素X,Y坐標(biāo)),并返回一個(gè)無(wú)符號(hào)的16位值(對(duì)應(yīng)的條帶索引)。最簡(jiǎn)單的以行為主的漸進(jìn)函數(shù)可能類(lèi)似于:

下載:文件

復(fù)制代碼

uint16_t myRemapFn(uint16_t x, uint16_t y) {

return WIDTH * y + x;

} uint16_t myRemapFn(uint16_t x, uint16_t y) {

return WIDTH * y + x;

}

這是一個(gè)粗略的例子。您可能是為以螺旋(易于布線)或希爾伯特曲線排列的像素設(shè)計(jì)的。

然后使用 setRemapFunction():

啟用該功能

下載:文件

復(fù)制代碼

matrix.setRemapFunction(myRemapFn); matrix.setRemapFunction(myRemapFn);

RAM再次基于像素,Adafruit_NeoMatrix是比Adafruit_NeoPixel需要更多的內(nèi)存,每個(gè)像素需要3字節(jié)的RAM。但是二維顯示器中的像素?cái)?shù)量呈指數(shù)增長(zhǎng)……16x16顯示器需要的內(nèi)存是8x8顯示器的四倍,或者大約768字節(jié)的RAM(接近Arduino可用空間的一半) Uno)。它可以從 tricky 到不可能的任何位置,將大型顯示器與需要大量?jī)?nèi)存的庫(kù)(例如 SD 或 ffft )結(jié)合起來(lái)。

伽瑪校正,因?yàn)锳dafruit_GFX庫(kù)是最初是為L(zhǎng)CD設(shè)計(jì)的(色彩保真度有限),它將色彩處理為16位值(而不是NeoPixels可以使用的全部24位)。這似乎不是很大的損失。人類(lèi)視覺(jué)的怪異使得明亮的色彩比昏暗的色彩難以辨認(rèn)。 Adafruit_NeoMatrix庫(kù)使用伽瑪校正選擇視覺(jué)上(盡管不是數(shù)字上)等距的亮度級(jí)別。紅色和藍(lán)色共有32個(gè)等級(jí),綠色有64個(gè)等級(jí)。

Color()函數(shù)執(zhí)行必要的轉(zhuǎn)換;您不需要做任何數(shù)學(xué)運(yùn)算。它接受8位的紅色,綠色和藍(lán)色值,并返回經(jīng)過(guò)伽瑪校正的16位顏色,然后可以將其傳遞給其他繪圖函數(shù)。

高級(jí)編碼

FastLED庫(kù)

如果希望增強(qiáng)NeoPixel的實(shí)力,您可以在FastLED庫(kù)中找到所需的一切。它是Adafruit_NeoPixel庫(kù)的替代方案,提供了更高級(jí)的功能,例如HSV顏色支持,無(wú)損亮度設(shè)置和高速數(shù)學(xué)運(yùn)算。 (它也適用于其他類(lèi)型的LED,例如DotStars?。?/p>

FastLED的工作原理完全不同;

注意:FastLED當(dāng)前僅適用于 RGB NeoPixels;它不是Adafruit_NeoPixel的直接替代品,現(xiàn)有的草圖將需要重寫(xiě)。 尚不支持RGBW像素。 完全。您將獲得不正確且不可預(yù)測(cè)的顏色。

我們不編寫(xiě)或維護(hù)FastLED,也無(wú)法提供軟件故障排除建議。如果需要幫助在論壇中使用FastLED NeoPixel項(xiàng)目時(shí),我們通常會(huì)要求您嘗試使用一種已知有效的Adafruit_NeoPixel示例草圖,以縮小是硬件還是軟件問(wèn)題。

訪問(wèn)FastLED網(wǎng)站上開(kāi)始。

常見(jiàn)問(wèn)題解答和進(jìn)一步的編程見(jiàn)解

幫助!與NeoPixels結(jié)合使用時(shí),我的Arduino伺服代碼停止工作!

不幸的是,NeoPixel和伺服庫(kù)不能很好地配合使用;一個(gè)依賴(lài)于定期禁用中斷,另一個(gè)絕對(duì)需要中斷。這里有幾個(gè)選項(xiàng):

使用專(zhuān)用的伺服控制板或分線板,將任務(wù)從處理器上卸載下來(lái),這樣就不會(huì)產(chǎn)生中斷。

使用一個(gè)基于硬件PWM的伺服庫(kù),而不是庫(kù)存的Arduino Servo庫(kù)。這樣可以提供穩(wěn)定的伺服定時(shí)而不會(huì)中斷,但只能控制非常有限數(shù)量的伺服(2-3),并且只能控制非常特定的引腳。

在駕駛NeoPixels時(shí),無(wú)法在紅外接收器上接收紅外代碼!

就像伺服一樣,紅外庫(kù)使用軟件中斷來(lái)輪詢(xún)IR LED,而標(biāo)準(zhǔn)NeoPixellibrary在更新NeoPixel時(shí)阻止中斷。

如果您不經(jīng)常更新NeoPixel,IR可以在兩次更新之間工作,但是如果一直更新,則需要使用另一個(gè)庫(kù)和比UnoorMega更強(qiáng)大的微控制器。理想情況下,它具有DMA,這樣NeoPixels不會(huì)占用任何CPU周期。

Marc MERLIN會(huì)根據(jù)您所擁有的芯片(Teensy,ESP8266或ESP32)來(lái)說(shuō)明如何做到這一點(diǎn):

http://marc.merlins.o rg/perso/arduino/post_2017-04-03_Arduino-328P-Uno-Teensy3_1-ESP8266-ESP32-IR-and-Neopixels.html

可以多快我刷新了(N)個(gè)像素的字符串?

NeoPixels接收來(lái)自固定頻率800 KHz數(shù)據(jù)流(“ V1” Flora像素除外,后者使用400 KHz)。因此,每個(gè)數(shù)據(jù)位需要1/800,000秒-1.25微秒。一個(gè)像素需要24位(紅色,綠色,藍(lán)色分別為8位)— 30微秒。發(fā)出最后一個(gè)像素的數(shù)據(jù)后,流必須停止至少50微秒,新顏色才能“鎖存”。

對(duì)于100個(gè)像素帶,即(100 * 30)+ 50,或3,050微秒。 1,000,000/3,050 =每秒約328次更新。

但是…

僅將推入位所需的時(shí)間電線。 實(shí)際刷新率將小于此值,并且在所有情況下都無(wú)法將其估算為單個(gè)數(shù)字。處理動(dòng)畫(huà)的每個(gè)“幀”都需要時(shí)間。多少時(shí)間取決于數(shù)學(xué)的復(fù)雜性和代碼的效率(例如,浮點(diǎn)計(jì)算可能相對(duì)較慢)。上面的公式給出了最大的理論速率,但這僅僅是一個(gè)起點(diǎn)。在某些情況下,現(xiàn)實(shí)可能會(huì)低于此數(shù)量級(jí)。

對(duì)于探索性基準(zhǔn)測(cè)試,您始終可以編寫(xiě)代碼,就像存在大量像素一樣,然后對(duì)結(jié)果進(jìn)行計(jì)時(shí)。該條帶將忽略掉多余的輸出位(或者甚至可以根本不連接NeoPixels進(jìn)行測(cè)試)。

那是行不通的。現(xiàn)在怎么辦?

由于NeoPixels使用固定頻率的時(shí)鐘,因此選項(xiàng)受到限制。您無(wú)法切換到速度更快的微控制器,并期望獲得完全不同的結(jié)果。

一種選擇是使用其他類(lèi)型的LED,例如我們的DotStar或LPD8806燈條或WS2801像素。盡管它們?cè)贜eoPixels上確實(shí)有其他折衷(成本,顏色分辨率和/或像素密度),但仍可以以更高的數(shù)據(jù)速率來(lái)驅(qū)動(dòng)。另一種方法是在功能更強(qiáng)大的微控制器或FPGA上開(kāi)發(fā)自己的代碼。并行驅(qū)動(dòng)多個(gè) NeoPixel條 。稍后將顯示一個(gè)這樣的項(xiàng)目-用于Teensy 3微控制器的OctoWS2811。這種事情很復(fù)雜,不建議初學(xué)者使用。甚至在經(jīng)驗(yàn)豐富的程序員中,當(dāng) real 瓶頸存在于其他地方時(shí),通常也會(huì)過(guò)分強(qiáng)調(diào)數(shù)據(jù)速率……除非您能確定這是問(wèn)題的根源,否則不要過(guò)多地談?wù)撍?p》

我可以使用(Board X)控制NeoPixels嗎?

我們目前僅提供Arduino庫(kù)。稍后請(qǐng)參閱其他設(shè)備的鏈接。除此之外,如果考慮編寫(xiě)自己的庫(kù),請(qǐng)了解某些處理器比其他處理器更適合該任務(wù)。通讀以下所示的時(shí)序要求,并確定所討論的芯片是否可以合成滿(mǎn)足那些規(guī)格的信號(hào)。一個(gè)8 MHz的AVR幾乎無(wú)法跟上…任何較慢的速度都可能會(huì)帶來(lái)麻煩,盡管某些特定于硬件的黑客(例如巧妙地使用SPI)也許可以實(shí)現(xiàn)。在許多情況下,需要匯編語(yǔ)言。

為什么不使用Raspberry Pi?

運(yùn)行Linux的Raspberry Pi是一個(gè)多任務(wù)系統(tǒng),控件可以隨時(shí)在多個(gè)正在運(yùn)行的程序之間切換。因此,無(wú)法保證NeoPixels要求的嚴(yán)格的800 KHz信號(hào)。您也許可以在短時(shí)間內(nèi)捏捏它,但這并不是可以依靠的。這就是為什么我們?cè)赗aspberry Pi光繪項(xiàng)目中使用DotStar LED。

用于ARM Cortex-M0板的DMA NeoPixels

如果您正在使用最新的“ M0”開(kāi)發(fā)板,例如Adafruit Feather M0,Circuit Playground Express或Arduino Zero,備用NeoPixel庫(kù),利用這些設(shè)備的直接內(nèi)存訪問(wèn)(DMA)功能使操作更流暢。然后,高級(jí)Arduino草圖可以使用不受懲罰的中斷,并且依賴(lài)millis()或micros()函數(shù)的代碼也不會(huì)浪費(fèi)時(shí)間。

NeoMatrix庫(kù)也有相應(yīng)的DMA版本。

p》

加上超強(qiáng)的 8路并發(fā)NeoPixel DMA庫(kù)。我們提供了羽翼和分線板的同伴,使連接和電平轉(zhuǎn)換更加輕松!

第三方庫(kù)

除了前面提到的FastLED庫(kù)之外,NeoPixel兼容庫(kù)也已經(jīng)為Arduino以外的設(shè)備開(kāi)發(fā)的。請(qǐng)記住,Adafruit并未開(kāi)發(fā)任何代碼,也無(wú)法修復(fù)錯(cuò)誤或提供技術(shù)幫助。這是Wild West的東西。

OctoWS2811:專(zhuān)用于PJRC Teensy 3.0微控制器板。使用DMA最多可同時(shí)驅(qū)動(dòng)多達(dá)8個(gè)NeoPixel條帶,而處理器負(fù)載卻最小??梢约?jí)聯(lián)多個(gè)板以用于更大的顯示器。

FadeCandy:也適用于Teensy 3.0。不支持OctoWS2811那樣多的像素,但為純色派增加了抖動(dòng)和平滑插值。

LEDscape:專(zhuān)為BeagleBone Black設(shè)計(jì)。盡管BeagleBone是像不兼容NeoPixel的Raspberry Pi這樣的多任務(wù)Linux系統(tǒng),但是此代碼利用了BeagleBone Black特有的硬件功能來(lái)驅(qū)動(dòng)數(shù)百米的NeoPixel帶,實(shí)際上沒(méi)有處理器負(fù)載。/li》

用于視差推進(jìn)器的WS2812 LED驅(qū)動(dòng)器。

xCORE NeoPixel測(cè)試代碼(用于XMOS xCORE startKIT)。

其中一些是3.3V器件。有關(guān)通過(guò)3.3V微控制器控制5V NeoPixel的說(shuō)明,請(qǐng)參見(jiàn)“為NeoPixel供電”頁(yè)面。

i》

WS2811? WS2812?為什么我會(huì)看到提到的兩個(gè)不同的名稱(chēng)?

WS2811是較早的驅(qū)動(dòng)器芯片,與RGB LED。數(shù)據(jù)信號(hào)類(lèi)似,但運(yùn)行速度只有一半。到WS2812(帶有集成的LED)發(fā)布時(shí),已經(jīng)圍繞WS2811的名稱(chēng)建立了許多代碼和項(xiàng)目。有時(shí),“用于WS2811”的代碼實(shí)際上可能是針對(duì)較新的芯片,或針對(duì)任何一種類(lèi)型。 Adafruit_NeoPixel庫(kù)同時(shí)支持。

編寫(xiě)您自己的庫(kù)

WS2812數(shù)據(jù)表解釋了數(shù)據(jù)傳輸協(xié)議。這是一個(gè)自計(jì)時(shí)信號(hào)-只有一根線,沒(méi)有分開(kāi)的數(shù)據(jù)線和時(shí)鐘線。通過(guò)更改固定頻率方波的占空比來(lái)表示“ 1”和“ 0”位。

數(shù)據(jù)表的時(shí)序值中有一個(gè)數(shù)學(xué)錯(cuò)誤。改用這些數(shù)字:

請(qǐng)注意,這個(gè)時(shí)間有將近25%的“擺動(dòng)空間”。因此,如果您的代碼與建議的時(shí)間不完全匹配,那么只要關(guān)閉就可以了。

每個(gè)像素有三個(gè)字節(jié)的數(shù)據(jù)。這些應(yīng)該以綠色,紅色,藍(lán)色的順序發(fā)布,并以最高有效位優(yōu)先。

首先發(fā)布像素#0(與微控制器最近)的數(shù)據(jù),然后發(fā)布像素#1,依此類(lèi)推直到最遠(yuǎn)的像素。這不像傳統(tǒng)的移位寄存器那樣運(yùn)行!

所有顏色數(shù)據(jù)發(fā)送完畢后,必須將數(shù)據(jù)線保持低電平至少50微秒,以使新顏色“鎖存”。

您可能想要深入研究我們的Arduino庫(kù)以獲取見(jiàn)解。時(shí)序關(guān)鍵部分使用AVR匯編語(yǔ)言編寫(xiě),但使用類(lèi)似C的偽代碼進(jìn)行了廣泛注釋。

我的微處理器不夠快

WS2812似乎與400 KHz WS2811信號(hào)向后兼容。如果您可以精確匹配后一種芯片的時(shí)序,則兩種芯片都會(huì)響應(yīng)。 WS2811協(xié)議是 不是 只是半速WS2812?!?0”和“ 1”位略有不同。從WS2811數(shù)據(jù)表中:

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    244

    文章

    24634

    瀏覽量

    691457
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    TAIYO YUDEN高頻產(chǎn)品使用指南:從選型到設(shè)計(jì)要點(diǎn)

    TAIYO YUDEN高頻產(chǎn)品使用指南:從選型到設(shè)計(jì)要點(diǎn) 在電子設(shè)備的設(shè)計(jì)中,高頻產(chǎn)品的選擇和應(yīng)用至關(guān)重要。TAIYO YUDEN的高頻產(chǎn)品廣泛應(yīng)用于各類(lèi)電子設(shè)備,本文將為電子工程師詳細(xì)介紹這些產(chǎn)品
    的頭像 發(fā)表于 01-08 17:20 ?598次閱讀

    TDK SmartSound One評(píng)估模塊使用指南

    TDK SmartSound One評(píng)估模塊使用指南 一、引言 在音頻設(shè)備的研發(fā)與測(cè)試過(guò)程中,一款便捷且功能強(qiáng)大的評(píng)估模塊能夠?yàn)楣こ處焸児?jié)省大量時(shí)間和精力。TDK SmartSound One評(píng)估
    的頭像 發(fā)表于 12-26 11:20 ?532次閱讀

    松下FH系列鋁電解電容:特性、應(yīng)用與使用指南

    松下FH系列鋁電解電容:特性、應(yīng)用與使用指南 在電子電路設(shè)計(jì)中,電容是不可或缺的基礎(chǔ)元件,而鋁電解電容以其高電容值和相對(duì)較低的成本,在眾多應(yīng)用中廣泛使用。今天,我們就來(lái)深入了解一下松下的FH系列
    的頭像 發(fā)表于 12-22 10:00 ?678次閱讀

    雙向保護(hù)開(kāi)關(guān)評(píng)估套件使用指南

    雙向保護(hù)開(kāi)關(guān)評(píng)估套件使用指南 在鋰離子電池的應(yīng)用中,電池管理系統(tǒng)(BMS)起著至關(guān)重要的作用,它能監(jiān)測(cè)電池狀態(tài)并確保電池安全運(yùn)行。其中,電子開(kāi)關(guān)是BMS的重要組成部分,在關(guān)鍵條件下能將電池與充電器或
    的頭像 發(fā)表于 12-20 20:35 ?1131次閱讀

    雙向保護(hù)開(kāi)關(guān)評(píng)估套件使用指南:從原理到實(shí)戰(zhàn)

    雙向保護(hù)開(kāi)關(guān)評(píng)估套件使用指南:從原理到實(shí)戰(zhàn) 引言 在鋰離子電池應(yīng)用中,電池管理系統(tǒng)(BMS)至關(guān)重要,它能實(shí)時(shí)監(jiān)測(cè)電池狀態(tài),保障電池安全運(yùn)行。而B(niǎo)MS中的電子開(kāi)關(guān),就像是電池的“守護(hù)者”,在關(guān)鍵時(shí)刻
    的頭像 發(fā)表于 12-20 20:30 ?1137次閱讀

    雙向保護(hù)開(kāi)關(guān)評(píng)估套件使用指南

    雙向保護(hù)開(kāi)關(guān)評(píng)估套件使用指南 在鋰電池應(yīng)用中,電池管理系統(tǒng)(BMS)至關(guān)重要,它能監(jiān)測(cè)電池狀態(tài)并確保安全運(yùn)行。BMS通常配備電子開(kāi)關(guān),在關(guān)鍵條件下將電池與充電器或負(fù)載斷開(kāi)。今天要介紹的雙向開(kāi)關(guān)評(píng)估
    的頭像 發(fā)表于 12-20 11:10 ?1051次閱讀

    EZ - BLE模塊編程套件(CYBLE - 022001 - PROG)使用指南

    EZ - BLE模塊編程套件(CYBLE - 022001 - PROG)使用指南 作為電子工程師,在藍(lán)牙模塊編程的工作中,一款好用的編程套件能極大提升工作效率。今天就來(lái)詳細(xì)介紹一下Cypress
    的頭像 發(fā)表于 12-20 10:35 ?1459次閱讀

    Amphenol數(shù)字紅外探測(cè)器評(píng)估套件使用指南

    Amphenol數(shù)字紅外探測(cè)器評(píng)估套件使用指南 在電子設(shè)計(jì)領(lǐng)域,紅外探測(cè)器的應(yīng)用越來(lái)越廣泛。Amphenol的數(shù)字紅外探測(cè)器評(píng)估套件(Digital IR EVM KIT,Part No.
    的頭像 發(fā)表于 12-11 09:20 ?570次閱讀

    Adafruit 電纜組件 — 原型開(kāi)發(fā)優(yōu)選線束解析

    為什么選擇 Adafruit? ● Adafruit 是開(kāi)源硬件領(lǐng)域的重要玩家。 Adafruit Industries 成立于 2005 年,以提供電子元件、硬件套件、開(kāi)發(fā)工具和學(xué)習(xí)資源著名。它不
    的頭像 發(fā)表于 12-04 15:58 ?658次閱讀
    <b class='flag-5'>Adafruit</b> 電纜組件 — 原型開(kāi)發(fā)優(yōu)選線束解析

    大彩講堂:VisualHMI-LUA教程-on_screen_change回調(diào)函數(shù)使用指南

    on_screen_change回調(diào)函數(shù)使用指南
    的頭像 發(fā)表于 08-31 16:32 ?989次閱讀
    大彩講堂:VisualHMI-LUA教程-on_screen_change回調(diào)函數(shù)<b class='flag-5'>使用指南</b>

    大彩講堂:VisualHMI-LUA教程-on_update回調(diào)函數(shù)使用指南

    回調(diào)函數(shù)使用指南
    的頭像 發(fā)表于 08-31 16:25 ?920次閱讀
    大彩講堂:VisualHMI-LUA教程-on_update回調(diào)函數(shù)<b class='flag-5'>使用指南</b>

    求 CS32G020移動(dòng)電源EVB用戶(hù)使用指南 中的清晰原理圖

    求 CS32G020移動(dòng)電源EVB用戶(hù)使用指南 中的清晰原理圖,里邊的原理圖是打印后再掃描的各種網(wǎng)絡(luò)標(biāo)注完全糊掉看不清,
    發(fā)表于 08-16 11:28

    瑞薩RA2L1 MCU e2 studio和FSP的使用指南

    本期“RA MCU眾測(cè)寶典” 繼續(xù)聚焦 “環(huán)境搭建” 專(zhuān)題,帶大家走進(jìn)【RA-Eco-RA2L1-48PIN-V1.0】的世界,查看e2 studio和FSP的下載、安裝及使用指南從零開(kāi)始完成開(kāi)發(fā)環(huán)境的配置。
    的頭像 發(fā)表于 08-04 13:45 ?2977次閱讀
    瑞薩RA2L1 MCU e2 studio和FSP的<b class='flag-5'>使用指南</b>

    Quartus工具使用指南

    電子發(fā)燒友網(wǎng)站提供《Quartus工具使用指南.pdf》資料免費(fèi)下載
    發(fā)表于 07-15 16:34 ?1次下載

    瑞薩電子RA系列微控制器的可擴(kuò)展性強(qiáng)的配置軟件包 (FSP)安裝下載與使用指南

    瑞薩電子RA系列微控制器的可擴(kuò)展性強(qiáng)的配置軟件包 (FSP)安裝下載與使用指南
    的頭像 發(fā)表于 06-11 17:21 ?1965次閱讀