當然,您已經不止一次看到製造商展示使用這些 RGB LED 組的項目。 這些條帶的應用範圍從可以根據一些外部事件改變顏色的簡單裝飾到用於燈光比賽等等。 這就是為什麼在本文中,我們將介紹您應該了解的所有最重要的信息 新像素 以及如何集成和 使用 Arduino 進行控制.
什麼是新像素?
Neopixel 只不過是 Adafruit Industries 的註冊商標. 但是,這些組件的通用術語是可單獨尋址的 RGB LED(例如:SK6812、WS2811、WS2812...)。 換句話說,它是一個帶有這些彩色燈的邏輯電路,它將作為控制信號的結果,顯示不同的顏色,執行某些上電序列等。
重要的是您知道構成矩陣的每個 RGB LED 都使用 4 個引腳或連接器,所以 你的針腳 是:
- 5V:高電平供電。
- GND:電源低電平或地。
- DIN:接收顏色信息的引腳。
- DO:pin 發送顏色信息。
除此之外,它還集成了一個帶有存儲器的電子電路,能夠 存儲 3 個字節, 每種顏色一個。 有關更多信息,您可以閱讀您購買的特定型號的數據表或文檔,因為可能存在差異。
哪裡可以買到 Neopixel
Si buscas 購買新像素 或您的 DIY 項目的類似元素,您可以在一些專門的電子商店或亞馬遜上找到它們。 在這方面的一些建議是:
將 Neopixel 與 Arduino UNO
至 將 Neopixel 或任何其他品牌與您的 Arduino 板集成 並開始在 Arduino IDE 中創建代碼以控制顏色和照明,您將需要:
- 盤子 Arduino UNO 版本3
- Neopixel 型 LED 矩陣
- 470阻力 Ω
- 1000 µF 電解電容 ≥6.3V。
- 麵包板
- 錐形電纜
- 5V at 1A 電源和連接器
Neopixel 矩陣與 Arduino UNO 如上圖所示。 連接後,接下來就是從 Arduino IDE 代碼. 在這種情況下,您必須使用一個名為 Adafruit NeoPixel,您可以從這裡下載,並開始測試和修改它附帶的示例。 例如,你可以從 Simple 開始,你會得到類似的東西:
#include <Adafruit_NeoPixel.h> //Incluir la biblioteca #define PIN 6 //Pin en el que has conectado el Neopixel // Número de píxeles encadenados (en este caso 21, pero puedes modificarlo según necesites) #define NUMPIXELS 21 // Inicializamos el objeto "pixeles" Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); // Argumento 1 = Número de pixeles encadenados // Argumento 2 = Número del pin de Arduino utilizado con pin de datos // Argumento 3 = Banderas de tipo de pixel: // 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) #define DELAYVAL 500 //timpo de espera en ms void setup() { pixels.begin(); // Inicializamos el objeto "pixeles" } void loop() { pixels.clear(); // Apagamos todos los LEDs // El primer pixel de una cadena es el #0, el segundo es el #1, y así sucesivamente hasta el n-1 for(int i=0; i<NUMPIXELS; i++) { // Modificamos el LED #i, encendiendolo con un color verde moderadamente brillante pixels.setPixelColor(i, pixels.Color(0, 150, 0)); pixels.show(); // Mandamos todos los colores con la actualización hecha delay(DELAYVAL); // Pausa antes de modificar el color del siguiente LED } }