女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

Adafruit NeoPixel的使用指南

454398 ? 來源:網(wǎng)絡整理 ? 作者:網(wǎng)絡整理 ? 2019-11-28 09:40 ? 次閱讀

NeoPixels的魔力

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

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

Adafruit NeoPixel的使用指南

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

關于NeoPixels的重要重要事項

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

NeoPixels!不要只是自己發(fā)光他們需要一個微控制器(例如Arduino)和一些程序。我們提供一些示例代碼來幫助您入門。要創(chuàng)建自己的效果和動畫,您需要一些編程實踐。如果這是一種新體驗,請遍歷一些Arduino入門教程,以體會這種語言。

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

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

不推薦。刷新率相對較低(約400 Hz),快速運動的彩色顯示屏可能看起來“有斑點”。盡管如此,它們在固定顯示屏(招牌,裝飾品,珠寶等)中看起來還是不錯的。對于POV使用,DotStar條帶看起來要好得多(它們的刷新率約為20KHz)。

光繪怎么樣?

絕對!攝影燈繪畫使用的動作較慢,這并不會引起人們對刷新率的限制。

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

NeoPixel鏈的最大長度沒有固有限制,但最終您會遇到各種實踐限制:

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

功耗:每個NeoPixel都會消耗一點點當前;更多像素=更多功率。電源也有一些上限。

時間:NeoPixels以固定的數(shù)據(jù)速率處理來自主機微控制器的數(shù)據(jù)。更多的像素=更多的時間和更低的動畫幀速率。

形狀因素

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

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

基本連接

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

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

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

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

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

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

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

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

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

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

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

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

最佳做法

不當使用會損壞您的NeoPixels。潛水之前,請注意以下事項:

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

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

嘗試最小化距離在Arduino和第一個像素之間,因此信號清晰。一兩米通常是沒有問題的。更長的時間會變得不可靠。

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

如果使用單獨的電源為像素供電,請在為微控制器供電之前先給像素供電。

請遵守與任何其他預防措施相同的預防措施。 靜電敏感部分;

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

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

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

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

為NeoPixels供電

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

添加300微控制器數(shù)據(jù)引腳和第一個NeoPixel上的數(shù)據(jù)輸入之間的500歐姆電阻可幫助防止可能會損壞第一個像素的電壓尖峰。請在您的micro和NeoPixels之間添加一個!

NeoPixels通常被描述為“ 5伏設備”,但實際情況要比這稍微細微一點。

有些(不是全部)NeoPixel產(chǎn)品可以在稍高的電壓下工作。根據(jù)可用空間,成本和最可能的應用,這取決于芯片周圍的其他支持組件。 有關每種類型可接受的電壓限制的指導,請參見特定的產(chǎn)品說明頁面。如有疑問,請以5伏為目標。

始終可接受較低的電壓,需要注意的是,LED會稍微變暗。有一個極限值,LED指示燈將無法點亮,或者開始顯示錯誤的顏色。

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

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

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

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

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

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

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

對臺式電源要格外小心。有些電源-甚至是知名的,備受好評的品牌-初次開機時可能會產(chǎn)生較大的電壓尖峰,從而立即損壞NeoPixels!

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

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

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

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

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

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

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

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

只要輸出是5伏直流電,這會導致我的NeoPixels爆炸嗎?你真金。 LED將僅吸收所需的電流(安培)。因此,額外的安培是可以的-實際上,這可能是好的事情。較大的電源將運行,因為它沒有被推到極限。

過大的電壓肯定會殺死您的LED。

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

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

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

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

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

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

巨型電源

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

一種可能性是重新使用ATX計算機電源。強大的服務器類型通??商峁└哌_30安培的電流。需要進行一些細微的修改……圍繞Google進行“ ATX電源破解”。請注意,如果12V導軌上沒有負載,則ATX 5V導軌可能非常不穩(wěn)定!

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

請注意,這種規(guī)模的項目可能非常危險,而且配電問題與業(yè)余規(guī)模的項目根本不同。我們很樂意在論壇中為我們的客戶提供幫助,他們只是為他們提供產(chǎn)品技術支持,而不是為他們提供全面的工程服務。如果您正在開發(fā)此類項目, ,請聘請在大功率,低壓系統(tǒng)(例如光伏或大型RV和船只)方面經(jīng)驗豐富的專業(yè)電工。這不是偽裝。

Distribution Power 電線越長,電阻越大。電阻越大,沿其長度下降的電壓就越大。如果電壓降得太遠,則NeoPixels的顏色可能會受到影響。

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

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

在微小的項目中,電阻也是一個問題!

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

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

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

越來越多的微控制器以3.3伏而不是5伏的電壓運行。這是提高效率的好消息,但可能會帶來5V NeoPixels的通信問題。來自微控制器的3.3V信號可能不夠“響亮”,無法向更高電壓的設備注冊。制造商建議最小信號電壓為NeoPixel電壓的70%。

有兩種解決方法:

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

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

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

軟件

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

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

Python和CircuitPython

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

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

CircuitPython微控制器接線

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

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

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

板載USB 到 LED 5V

板載GND 》連接到 LED接地

D5板到 LED Din

Python計算機接線

由于可以使用數(shù)十臺 Linux計算機/主板,因此我們將顯示Raspberry Pi的接線。對于其他平臺,請訪問Linux上的CircuitPython指南,以了解您的平臺是否受支持。

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

Pi 5V 至 LED 5V

Pi GND 到 LED GND

Pi GPIO18 要在樹莓派上 LED Din

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

CircuitPython安裝NeoPixel庫

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

首先請確保您正在為板運行最新版本的Adafruit CircuitPython。/p》

接下來,您需要安裝必要的庫以使用硬件-仔細按照以下步驟從Adafruit的CircuitPython庫捆綁包中查找和安裝這些庫。我們的CircuitPython入門指南上有一個很棒的頁面,說明如何安裝庫捆綁包。

對于諸如Trinket M0或Gemma M0的非表達板,您需要從捆綁包中手動安裝必要的庫:

neopixel.mpy

adafruit_bus_device

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

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

NeoPixel庫的Python安裝

您需要安裝Adafruit_Blinka庫,該庫在Python中提供CircuitPython支持。這可能還需要驗證您正在運行Python3。由于每個平臺都有一些不同,并且Linux經(jīng)常更改,請訪問Linux上的CircuitPython指南,以準備好您的計算機!

一旦完成,請從您的命令行運行以下命令:

sudo pip3 install adafruit-circuitpython-neopixel

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

CircuitPython和Python用法

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

要使NeoPixels在Raspberry Pi上運行,您必須以root身份運行代碼!需要根訪問權限才能訪問RPi外圍設備。

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

下載:文件

復制代碼

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)在,您準備使用以下屬性點亮NeoPixel LED:

亮度-LED的整體亮度

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

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

例如,點亮第一個NeoPixel紅色:

下載:文件

復制代碼

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

要點亮所有NeoPixels綠色:

下載:文件

復制代碼

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

這就是CircuitPython和NeoPixel LED入門的全部內(nèi)容!

完整示例代碼

下載:項目Zip 或 neopixel_simpletest.py | 在Github上查看

復制代碼

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

我們有一個單獨的指南,說明了Microsoft MakeCode中NeoPixels的使用:

指南鏈接:具有MakeCode的NeoPixels

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

下載

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

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

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

NeoPixel 12-LED環(huán)

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫中的Fritzing對象

NeoPixel 16-LED環(huán)

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫中的Fritzing對象

NeoPixel 24-LED環(huán)形

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫中的裝飾對象

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

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫中的Fritzing對象

NeoPixel寶石

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫中的Fritzing對象

適合面包板的NeoPixel Breakout

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫中的Fritzing對象

NeoPixel NeoMatrix 8x8

GitHub上的

EagleCAD PCB文件

Adafruit Fritzing庫中的Fritzing對象

NeoPixel Arduino Shield

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫中的Fritzing對象

NeoPixel 8 Stick

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫中的Fritzing對象

NeoPixel燈帶和鋼絞線

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

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

觀看你的力量。盡管每個像素只需要一點電流,但它加起來很快 。.. NeoPixel條形如此簡單易用,可以很快帶走!我們將在“為NeoPixels供電”頁面上進行詳細說明。

RGB NeoPixel條帶

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

每米30個LED,白帶

每米30個LED,黑條

每米60個LED,白條

每米60個LED,黑色帶

每米144個LED,白色帶

每米144個LED ,黑條

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

30 LED:9瓦(約1.8安培)

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

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

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

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

迷你緊身RGB NeoPixel條紋

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

每米30個LED,白色條帶

每米30個LED,黑條

每米60個LED,白條

每米60個LED,黑條

每米144個LED,白條

每米144個LED,黑條

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

電源要求類似于上述標準寬度的NeoPixel膠條。

側(cè)光NeoPixel條帶

/table》

RGBW NeoPixel條

《表class =“ build-table”》

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

60個LED,1米長的黑色燈條

90個LED, 1米長的黑條

120個LED,1米長的黑條

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

每米30條RGBW LED,白帶

《每米每米30個RGBW LED,強光

米,每米60個RGBW LED,白光

每米60個RGBW LED米,黑條

每米144個RGBW LED,白條

每米144個RGBW LED,黑條

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

30個RGBW LED:12瓦(5伏時為2.4安)

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

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

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

“ Neon-Like” NeoPixel Flex Strip

這種獨特的NeoPixel柔性條帶厚實的硅膠外殼,具有類似 neon-like 的擴散外觀。

此條帶在儀表上包含 60個LED,但每像素3個LED。因此,基本上,在您的NeoPixel程序中,這看起來像一串20像素長的線。

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

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

紫外線NeoPixel條

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

每米32個UV LED,白色剝離

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

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

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

NeoPixel鋼絞線

像NeoPixel條一樣,這些“ 鋼絞線” 靈活,并且可以被包裹在東西周圍。像素之間的距離更遠(2或4英寸),每個像素被密封在自己的小塑料盒中,使其具有防風雨(但不適合連續(xù)浸沒)。一串中有 20個像素。

NeoPixel鋼絞線— 20 LED 4“間距

NeoPixel鋼絞線— 2“間距處的20個LED

關于NeoPixel條的詳細信息

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

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

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

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

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

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

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

兩面地毯膠帶,可以輕松抓住硅膠套;類似于便利貼?;蛘?,您也可以嘗試在頂部清除管道膠帶。

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

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

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

NeoPixel環(huán)

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

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

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

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

60 像素環(huán)實際上作為 15 像素季度。要獲得整圈,您需要購買 4 和焊料他們在一起。否則,您可能會發(fā)現(xiàn)個人弧的創(chuàng)意

像素數(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個15像素弧)158 mm/6.2“145毫米/5.7英寸

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

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

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

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

中性:約 4500K 。

暖白:約。 3000K 。

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

關于NeoPixel環(huán)的細部細節(jié)

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

如果使用鱷魚夾,我們建議先將短跨接線焊接到環(huán)輸入并連接夾子出于類似的原因。(我們的一些教程和產(chǎn)品照片的確顯示了直接與環(huán)相連的鱷魚夾,但我們在使用它們上有很多經(jīng)驗。)

還有為微粒(以前稱為Spark) Photon 開發(fā)板專門設計的 24像素RGB 環(huán)。

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

NeoPixel矩陣

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

剛性8x8 NeoPixel矩陣

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

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

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

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

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

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

中性:約 4500K 。

暖白:約 3000K 。

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

靈活的NeoPixel矩陣

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

8x8 RGB像素

16x16 RGB像素

8x32 RGB像素

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

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

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

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

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

不過這些矩陣稱為“柔性”,這些矩陣不能承受連續(xù)和反復的彎曲。“可成形”可能是一個更好的詞-它們可以圍繞諸如帽子之類的剛性或半剛性形狀彎曲。反復彎曲(如在服裝上)將很快使焊料連接破裂。 (產(chǎn)品頁面上的視頻僅強調(diào)這些矩陣的靈活性,但這確實是“不要在家中嘗試”的東西。)

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

關于NeoPixel矩陣的詳細信息

如NeoPixel Strips頁面上所述,在使用NeoPixel矩陣時請牢記功耗。

i》

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

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

我們在NeoPixel Shields頁面上還有一些特殊用途的矩陣!

NeoPixel Shields

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

適用于Arduino的NeoPixel Shield

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

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

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

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

NeoPixel FeatherWing

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

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

NeoPixel Featherwing僅 RGB ;沒有RGBW版本。

Pimoroni獨角獸帽子

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

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

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

以前在“環(huán)”頁面上提到過,但后代:此 24像素RGB ring是專門為“粒子”(以前稱為Spark) Photon 開發(fā)板設計的。

其他NeoPixel形狀

NeoPixel Stick

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

NeoPixel棒有 RGB 和 RGBW 品種。

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

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

NeoPixel珠寶

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

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

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

1/4 60 NeoPixel戒指

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

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

Side Light NeoPixel LED PCB Bar strong》

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

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

單個NeoPixels

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

集成的NeoPixel產(chǎn)品

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

Flora RGB Smart NeoPixels

原始的Adafruit NeoPixel尺寸! Flora RGB Smart NeoPixels 專為使用導電線的可穿戴項目而設計,但也可以與電線正常焊接。這些有兩種格式:

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

20張紙 strong》,在需要時將它們剪下來并節(jié)省一點錢。

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

適合面包板的RGBSmartNeoPixels

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

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

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

對于這兩種類型,標頭都是可選的,不包含。

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

NeoPixel迷你PCB

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

這些沒有安裝孔或焊接通孔…導線必須直接焊接到PCB背面的焊盤上。

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

離散NeoPixel產(chǎn)品

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

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

穿透式NeoPixels

離散通孔NeoPixels 有兩種尺寸:

8mm Diffused (5包)

5mm Diffused –每包5張。

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

通孔NeoPixels僅 RGB ;沒有RGBW版本。強烈建議在每個像素的+和地面之間使用0.1μF電容。

SMT NeoPixels

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

5050 RGB LED – 10件裝。

RGBW NeoPixel –冷白色–白色外殼-每包10個。

RGBW NeoPixel –中性白–白色案例 –每包10個。

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

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

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

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

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

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

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

白色和黑色外殼的像素在功能上是相同的;這純粹是您設計的美學選擇。

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

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

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

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

去耦電容器。與“ 5050” NeoPixels一樣,白色和黑色外殼版本在功能上相同,這是一種美學設計選項。

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

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

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

Arduino庫安裝

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

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

通過庫管理器安裝Adafruit_NeoPixel

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

手動安裝Adafruit_NeoPixel庫

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

為Arduino下載Adafruit_NeoPixel

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

生成的文件夾應包含文件 Adafruit_NeoPixel.cpp , Adafruit_NeoPixel.h 和“ 示例”子文件夾。有時在Windows中,您會得到一個中級文件夾,并且需要四處移動。

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

如果當前是Arduino IDE,請重新啟動

這是一個教程,它逐步指導了手動正確安裝Arduino庫的過程。

一個簡單的代碼示例:strandtest

啟動Arduino IDE。從文件菜單中,選擇速寫本 → 庫 → Adafruit_NeoPixel → strandtest

(如果Adafruit_NeoPixel過渡菜單不存在,則說明庫未正確安裝,或者安裝后需要重新啟動IDE。請檢查上述安裝步驟,以確認其正確命名和位置。)

從工具菜單中選擇您的主板類型和串行端口,然后嘗試上傳到主板。如果NeoPixels如前所述已連接并已供電,您應該會看到一點燈光。

沒有任何反應!

檢查您的連接。最常見的錯誤是連接到測試條的輸出端而不是輸入。

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

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

更改此行:

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

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

并重新上載測試鏈示例。

我沒有RGBW LED且LED仍在閃爍

99%的時間是由于沒有共享接地線已連接至Arduino。確保來自Neopixels的地線連接到您的電源地線和 Arduino地線。

Arduino庫的使用

有關Adafruit_NeoPixel庫的Doxygen生成的文檔,請參見此處。

目前假設您已安裝Arduino的Adafruit_NeoPixel庫并成功運行了strandtest示例草圖。如果沒有,請返回上一頁以獲取設置方向的指導。

要了解有關編寫自己的NeoPixel草圖的信息,請先剖析最粗的草圖 。..

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

下載:文件

復制代碼

#include #include

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

下載:文件

復制代碼

// 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ù)字分配給符號“ LED_PIN”和“ LED_COUNT”,以供以后參考。 不需要以這種方式完成,但是可以更輕松地更改NeoPixel連接的引腳和長度,而無需深入研究代碼。

最后一行聲明NeoPixel object。我們稍后將通過名稱來引用它以控制像素帶。括號中有三個參數(shù)或自變量:

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

與NeoPixel條(或其他設備)連接的引腳號。通常,這將是一個數(shù)字,但我們之前已聲明符號 LED_PIN 在此處通過名稱進行引用。

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

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

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

i》下載:文件

復制代碼

void setup() {

strip.begin();

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

} void setup() {

strip.begin();

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

}

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

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

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

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

下載:文件

復制代碼

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

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

下載:文件

復制代碼

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

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

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

要將第12個像素(#11,從0開始計數(shù))設置為品紅色(紅色+藍色),您可以編寫:

下載:文件

復制代碼

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

設置第8個像素(#7從0開始計數(shù))到半亮度白色(帶有RGBW條紋),沒有紅色/綠色/藍色的光線,請使用:

下載:文件

復制代碼

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

兩個參數(shù):

下載:文件

復制代碼

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

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

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

下載:文件

復制代碼

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

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

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

下載:文件

復制代碼

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

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

下載:文件

復制代碼

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

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

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

下載:文件

復制代碼

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

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

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

“計數(shù)”是要填充的像素數(shù)。必須為正值。

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

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

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

下載:文件

復制代碼

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

您可以使用 getPixelColor()查詢預先設置的像素的顏色:

下載:文件

復制代碼

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

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

先前聲明的條中的像素數(shù)可以使用 numPixels()進行查詢:

下載:文件

復制代碼

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

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

下載:文件

復制代碼

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

就像setPixel()一樣,這沒有立竿見影的效果。您需要

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

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

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

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

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

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

盡管

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

下載:文件

復制代碼

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

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

下載:文件

復制代碼

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

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

下載:文件

復制代碼

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

沒有否相應的功能,從RGB到HSV。這是有目的的并且是有意設計的,因為在該方向上的轉(zhuǎn)換通常是模棱兩可的-給定輸入可能有多種有效的可能性。如果您查看一些示例草圖,您會發(fā)現(xiàn)它們跟蹤自己的色調(diào)…他們不為像素分配顏色,然后嘗試將其讀回

…和伽瑪校正

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

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

下載:文件

復制代碼

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

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

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

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

幫助!

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

主要有兩個原因:

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

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

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

我可以在不同的引腳上有多個NeoPixel對象嗎?

當然!每個文件都需要有自己的唯一名稱聲明:

下載:文件

復制代碼

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);

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

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

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

我是顏色錯誤。紅色和藍色被交換!

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

當我重復使用setBrightness()時,顏色會散開!

請參見上面的注釋; setBrightness()被設計為一次性設置功能,而不是動畫效果。

另請參見“高級編碼”頁面-還有一個替代庫,其中包括“無損”亮度調(diào)節(jié)以及其他功能! p》

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

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

NeoMatrix庫

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

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

Adafruit_NeoMatrix

Adafruit_GFX

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

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

Arduino草圖需要包含這三個標頭只是為了使用該庫:

下載:文件

復制代碼

#include

#include

#include #include

#include

#include

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

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

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

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

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

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

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

我們以此聲明矩陣:

下載:文件

復制代碼

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);

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

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

NEO_MATRIX_TOP + NEO_MATRIX_RIGHT + NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE

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

此設置的要點是,草圖的其余部分無需思考關于矩陣的布局。不管第一個NeoPixel的實際位置如何,繪圖圖形的坐標(0,0)總是 位于左上角。

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

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

下載:文件

復制代碼

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(

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

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

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

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

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

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

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

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

第一個圖塊必須位于四個角之一。添加 NEO_TILE_TOP 或 NEO_TILE_BOTTOM 和 NEO_TILE_LEFT 或 NEO_TILE_RIGHT 來指示第一個圖塊的位置。這與圖塊中第一個像素的位置無關。它們可以是不同的角。

標題可以水平排列或垂直排列。同樣,這與圖塊中的像素順序無關。添加 NEO_TILE_ROWS 或 NEO_TILE_COLUMNS 。

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

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

其他布局對于其他未均勻平鋪的情況,您可以提供自己的功能,以將X/Y坐標重新映射到NeoPixel帶索引。此函數(shù)應接受兩個無符號的16位參數(shù)(像素X,Y坐標),并返回一個無符號的16位值(對應的條帶索引)。最簡單的以行為主的漸進函數(shù)可能類似于:

下載:文件

復制代碼

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;

}

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

然后使用 setRemapFunction():

啟用該功能

下載:文件

復制代碼

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

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

伽瑪校正,因為Adafruit_GFX庫是最初是為LCD設計的(色彩保真度有限),它將色彩處理為16位值(而不是NeoPixels可以使用的全部24位)。這似乎不是很大的損失。人類視覺的怪異使得明亮的色彩比昏暗的色彩難以辨認。 Adafruit_NeoMatrix庫使用伽瑪校正選擇視覺上(盡管不是數(shù)字上)等距的亮度級別。紅色和藍色共有32個等級,綠色有64個等級。

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

高級編碼

FastLED庫

如果希望增強NeoPixel的實力,您可以在FastLED庫中找到所需的一切。它是Adafruit_NeoPixel庫的替代方案,提供了更高級的功能,例如HSV顏色支持,無損亮度設置和高速數(shù)學運算。 (它也適用于其他類型的LED,例如DotStars!)

FastLED的工作原理完全不同;

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

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

訪問FastLED網(wǎng)站上開始。

常見問題解答和進一步的編程見解

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

不幸的是,NeoPixel和伺服庫不能很好地配合使用;一個依賴于定期禁用中斷,另一個絕對需要中斷。這里有幾個選項:

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

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

在駕駛NeoPixels時,無法在紅外接收器上接收紅外代碼!

就像伺服一樣,紅外庫使用軟件中斷來輪詢IR LED,而標準NeoPixellibrary在更新NeoPixel時阻止中斷。

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

Marc MERLIN會根據(jù)您所擁有的芯片(Teensy,ESP8266或ESP32)來說明如何做到這一點:

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

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

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

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

但是…

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

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

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

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

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

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

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

為什么不使用Raspberry Pi?

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

用于ARM Cortex-M0板的DMA NeoPixels

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

NeoMatrix庫也有相應的DMA版本。

p》

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

第三方庫

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

OctoWS2811:專用于PJRC Teensy 3.0微控制器板。使用DMA最多可同時驅(qū)動多達8個NeoPixel條帶,而處理器負載卻最小??梢约壜?lián)多個板以用于更大的顯示器。

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

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

用于視差推進器的WS2812 LED驅(qū)動器。

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

其中一些是3.3V器件。有關通過3.3V微控制器控制5V NeoPixel的說明,請參見“為NeoPixel供電”頁面。

i》

WS2811? WS2812?為什么我會看到提到的兩個不同的名稱?

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

編寫您自己的庫

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

數(shù)據(jù)表的時序值中有一個數(shù)學錯誤。改用這些數(shù)字:

請注意,這個時間有將近25%的“擺動空間”。因此,如果您的代碼與建議的時間不完全匹配,那么只要關閉就可以了。

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

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

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

您可能想要深入研究我們的Arduino庫以獲取見解。時序關鍵部分使用AVR匯編語言編寫,但使用類似C的偽代碼進行了廣泛注釋。

我的微處理器不夠快

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

責任編輯:wv

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

    關注

    242

    文章

    23712

    瀏覽量

    671076
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    GaN HEMT的SPICE模型使用指南及示例

    GaN HEMT的SPICE模型使用指南及示例總結(jié) 本文檔基于GaN HEMT的實測特性描述了當前版本的模型。該模型專為與PSpice和LTspice配合使用而開發(fā)。本文檔首先介紹該模型,然后提供將
    的頭像 發(fā)表于 03-11 17:43 ?805次閱讀
    GaN HEMT的SPICE模型<b class='flag-5'>使用指南</b>及示例

    Nexperia SiC MOSFET LTspice模型使用指南

    電子發(fā)燒友網(wǎng)站提供《Nexperia SiC MOSFET LTspice模型使用指南.pdf》資料免費下載
    發(fā)表于 02-13 17:21 ?1次下載
    Nexperia SiC MOSFET LTspice模型<b class='flag-5'>使用指南</b>

    使用伺服機構(gòu)開發(fā)板控制 NeoPixel LED

    [Adafruit]的 [NeoPixel LED 燈條]! 圖 1:Kitronik Simply 伺服機構(gòu)板。(圖片來源:Kitronik) 最近,我有個想法,用我的遙控飛機制作一架夜間飛行器。
    的頭像 發(fā)表于 01-25 15:04 ?407次閱讀
    使用伺服機構(gòu)開發(fā)板控制 <b class='flag-5'>NeoPixel</b> LED

    GD32H7xx電源旁路模式使用指南

    電子發(fā)燒友網(wǎng)站提供《GD32H7xx電源旁路模式使用指南.pdf》資料免費下載
    發(fā)表于 01-22 17:34 ?0次下載
    GD32H7xx電源旁路模式<b class='flag-5'>使用指南</b>

    AN198 GD32G5x3系列比較器使用指南

    電子發(fā)燒友網(wǎng)站提供《AN198 GD32G5x3系列比較器使用指南.pdf》資料免費下載
    發(fā)表于 01-21 17:42 ?0次下載
    AN198 GD32G5x3系列比較器<b class='flag-5'>使用指南</b>

    示波器使用指南 如何選擇合適的示波器

    示波器使用指南 示波器是一種電子測量儀器,用于顯示電壓隨時間變化的波形。以下是示波器的基本使用指南: 獲得基線 : 預置面板各開關、旋鈕至適當位置。 按下電源開關,電源指示燈點亮。 調(diào)節(jié)相關控制旋鈕
    的頭像 發(fā)表于 11-28 09:26 ?904次閱讀

    RTC時鐘使用指南:簡單步驟,實用成果

    今天展示的是RTC時鐘使用指南,輕松學習,完美成果。
    的頭像 發(fā)表于 11-08 11:40 ?914次閱讀
    RTC時鐘<b class='flag-5'>使用指南</b>:簡單步驟,實用成果

    技術指南 | 深視智能SRI系列一體式激光三維輪廓測量儀快速使用指南

    技術指南 | 深視智能SRI系列一體式激光三維輪廓測量儀快速使用指南
    的頭像 發(fā)表于 10-29 08:08 ?781次閱讀
    技術<b class='flag-5'>指南</b> | 深視智能SRI系列一體式激光三維輪廓測量儀快速<b class='flag-5'>使用指南</b>

    技術指南 | 深視智能SCI系列光譜共焦位移傳感器快速使用指南

    技術指南 | 深視智能SCI系列光譜共焦位移傳感器快速使用指南
    的頭像 發(fā)表于 10-22 08:06 ?487次閱讀
    技術<b class='flag-5'>指南</b> | 深視智能SCI系列光譜共焦位移傳感器快速<b class='flag-5'>使用指南</b>

    C55x片上低壓差穩(wěn)壓器(LDO)的使用指南

    電子發(fā)燒友網(wǎng)站提供《C55x片上低壓差穩(wěn)壓器(LDO)的使用指南.pdf》資料免費下載
    發(fā)表于 10-11 10:20 ?0次下載
    C55x片上低壓差穩(wěn)壓器(LDO)的<b class='flag-5'>使用指南</b>

    中短程超聲波應用優(yōu)化和使用指南:TUSS4470和TDC1000

    電子發(fā)燒友網(wǎng)站提供《中短程超聲波應用優(yōu)化和使用指南:TUSS4470和TDC1000.pdf》資料免費下載
    發(fā)表于 09-24 11:21 ?8次下載
    中短程超聲波應用優(yōu)化和<b class='flag-5'>使用指南</b>:TUSS4470和TDC1000

    Jacinto配合DS90C189-Q1輸出LVDS信號使用指南

    電子發(fā)燒友網(wǎng)站提供《Jacinto配合DS90C189-Q1輸出LVDS信號使用指南.pdf》資料免費下載
    發(fā)表于 09-05 11:33 ?0次下載
    Jacinto配合DS90C189-Q1輸出LVDS信號<b class='flag-5'>使用指南</b>

    深視智能SGI系列激光位移傳感器快速使用指南

    深視智能SGI系列激光位移傳感器快速使用指南
    的頭像 發(fā)表于 07-27 08:45 ?632次閱讀
    深視智能SGI系列激光位移傳感器快速<b class='flag-5'>使用指南</b>

    深視智能SD33系列小型激光位移傳感器使用指南

    深視智能SD33系列小型激光位移傳感器使用指南
    的頭像 發(fā)表于 07-27 08:44 ?801次閱讀
    深視智能SD33系列小型激光位移傳感器<b class='flag-5'>使用指南</b>

    深視智能SD22系列小型激光位移傳感器使用指南

    深視智能SD22系列小型激光位移傳感器使用指南
    的頭像 發(fā)表于 07-27 08:42 ?702次閱讀
    深視智能SD22系列小型激光位移傳感器<b class='flag-5'>使用指南</b>