第1步:什么是NeoPixel
在我們開始學習幫助我們控制它們的庫之前,我們先來談談NeoPixels。
這些是可單獨尋址的LED 所有安裝在一根可以通過微控制器上的單引腳控制的字符串上。這意味著一個引腳可以控制所有LED顏色以及在任何給定時間LED都處于打開狀態。與普通RGB LED 相比,您會注意到我們需要3個引腳來控制紅色 綠色和藍色值和所有LED必須保持 或關閉。因此,你可以看到使用單獨可尋址可以幫助創建一些很酷的效果。
許多公司銷售可尋址LED條,但最受歡迎的是Adafruit的 NeoPxiel 。 Adafruit生產一系列可尋址的LED燈條,并提供圖書館來控制它們,這被稱為“Adafruit NeoPixel”,還有其他公司已經制作了控制這些可尋址LED的庫,但在我看來,我發現Adafruits有最好的支持并且最容易上手
如果你還沒有,你可以在這里獲得NeoPixel
第2步:安裝庫
因此我們決定使用Adafruit庫來控制我們的NeoPixel,我們如何安裝它?
首先,您需要先在計算機上安裝 Arduino IDE ,然后才能從此處下載。一旦完成所有加載并繼續啟動Arduino IDE并執行以下操作:
單擊“草圖”,然后將鼠標懸停在“包含庫”上
點擊“管理庫”
您現在應該會看到一個彈出窗口打開,這就是我們所在的位置安裝和更新新庫。
在搜索欄中,搜索“Adafruit NeoPixel”
點擊名為的那個Adafruit NeoPixel“
點擊”安裝“
一旦完成加載,NeoPixel庫現在將在您的IDE中。您可以通過檢查示例是否已加載到IDE中來測試:
單擊“文件”,然后將鼠標懸停在“示例”
在列表中的某個位置,您應該看到“Adafruit NeoPixel”
點擊“Adafruit NeoPixel”也看到所有示例
此時,庫已成功加載到我們的Arduino IDE中,現在我們可以繼續查看示例。
第3步:示例
現在,如果您點擊任何一個示例,您可能會有點意外在獲得其中一個點亮的過程中涉及多少代碼。 “Standardtest”示例有6個額外的功能!控制其中一個絕對比僅僅將紅綠色或藍色引腳設置為高標準RGB條帶更具挑戰性,但它值得搞清楚,因為它可以讓你做一些非常酷的東西。
“標準測試”實際上是更高級的示例之一,所以讓我們從一個簡單的示例加載開始,比“simple”示例更簡單的示例:
點擊“文件”,然后將鼠標懸停在“示例”
點擊“Adafruit NeoPixel “
點擊”簡單“
現在我們可以在IDE中打開一個簡單的示例。
第4步:簡單示例
在這個例子中發生了很多重要的代碼,所以我們將逐一看一下。
在示例的最頂層我們有以下代碼:
#include
這告訴Arduino我們想要使用NeoPixel及其在此草圖中帶來的所有屬性,如果沒有這個草圖,草圖將無法運行。
接下來,我們看到以下內容:/p》 #ifdef __AVR__
#include
#endif
這說明如果我們使用的是AVR板,例如th e Trinket或Gemma包含與它們兼容的庫。如果您使用的是Arduino,則無效。
接下來,我們會看到兩行非常重要的代碼:
#define PIN 6
#define NUMPIXELS 16
第一個名為“PIN的值“用于告訴草圖我們要在微控制器上使用哪個引腳。如果您希望通過微控制器上的引腳8控制NeoPixel,則需要將“6”更改為“8”。
名為“NUMPIXELS”的值用于告訴字符串特定字符串上有多少個像素。例如,我的字符串有8個像素,所以我將值更改為8.此值有助于草圖跟蹤字符串上有多少像素,允許我們使用此值創建函數,稍后我們將對此進行處理。
接下來,我們有一行代碼引用我們已經定義的值:
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
這段代碼實際上并沒有為我們服務,它可以幫助微控制器進行通信與NeoPixel。你可能會注意到我們定義的那些值在這里,我們可以刪除單詞“NUMPIXELS”和“PIN”,如果我們愿意,只需用值替換它們。
接下來,我們有一個延遲值,我們稍后會參考。
int delayval = 500;
這很簡單,只是聲明“delayval” = 500 這是半秒
現在我們請參閱 Void Setup :
void setup() {
#if defined (__AVR_ATtiny85__)
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
pixel.begin();
}
前幾行代碼再次與該類的飾品和其他微控制器一起使用,因此我們真的不需要擔心它。 “Pixel.begin”很重要,這會讓草圖初始化庫。
接下來,我們看到 Void Loop 。這就是有趣的事情發生的地方。
for(int i=0;i
現在,這段代碼非常復雜,用于創建一個函數,我們將在下一步回到這一點。
接下來,我們看到控制所有內容的代碼
pixels.setPixelColor(i, pixels.Color(0,150,0));
代碼以“pixels.setPixelColor”開頭,所以似乎有理由相信這一點代碼將允許我們更改像素的顏色。第一個值是“i”現在這是代碼的一部分我們告訴它我們想要點亮哪個像素,現在它設置為“i”因為我們之前討論過它的部分功能,但如果我將此值從“i”更改為“3”,然后將代碼上傳到字符串上的第三個像素會點亮。這就是我們控制個人像素的方法。
在此之后我們看到“pixels.Color(0,150,0)”這些是我們改變顏色的值,第一個值是紅色第二個值是綠色,最終值是藍色。現在,值設置為“(0 ,150,0)“表示條帶為淺綠色(0表示顏色關閉,255表示顏色最亮)。如果我要將其改為“(0,0,255)”并上傳它,那么條帶會變得非常亮藍色。我們也可以混合像“(150,0,15)”這樣的顏色來違反。
接下來我們有最后一段代碼:
pixels.show();
delay(delayval);
“pixels.show”將當前設置發送到像素,如果我們沒有這個,它將永遠不會更新像素,它將保持不變。 “延遲”可以阻止像素更新太快,并且會在我們下一步要做的功能中扮演一個雙重角色。
這是一個非常長時間停止,但我們學習了如何控制NeoPixel的關鍵基礎知識,在這一步中,我們了解了如何開啟或關閉各個LED以及如何設置這些單個NeoPixel的顏色。
步驟5:簡單示例函數
現在將所有基本設置代碼放在一邊讓我們來看看在我之前談到的基本功能中。
我們要創建的功能會在每個NeoPixel之后打開,所以第一個會點亮,然后會發生短暫的延遲,然后第二個會點亮,然后是另一個短暫的延遲,一直到第8個NeoPixel。
為此,我們使用以下代碼:
for(int i=0;i
并且:
pixels.setPixelColor(i, pixels.Color(0,150,0));
你會注意到這封信 “i”在應該有一個用于設置NeoPixel打開的數字的空間中。您還會注意到“i”在第一段代碼中也是“i = 0”和“i ++”。
這里發生的事情是我們說“i”=字符串上的第一個NeoPixel(i = 0)(字符串上的第一個NeoPixel是0,第二個是1,第三個是2 。..。.第八個是7)然后我們說我們需要每個循環增加“i” 1 “i ++”然后當我們被問到我們想要點亮哪個NeoPixel時,我們給它賦值“i”所以每次循環運行時“i”的值增加1下一個NeoPixel點亮。
繼續上傳,你應該看到第一個Neopixel點亮,然后是第二個,然后是第三個點亮,直到它們全部點亮。
現在看一下這段代碼:
for(int i=7;i
在這個版本的代碼“i”從7開始,并且“我 - ”這將使每個循環的“i”的值減少1,這意味著最后一個Neopixel將亮起,然后是第二個最后一個,直到“i = 0 “第一個會點亮。
發布評論請先 登錄
WXZ196微機消諧裝置的工作方式是什么
使用ADS1258的時候調試了它的兩種工作方式,寄存器的值會發生錯亂,為什么?
數字化儀的工作方式有哪些
串行接口的工作方式有幾種,串行接口的RXD1和TXD1是什么端口
使用伺服機構開發板控制 NeoPixel LED

評論