WS2812B介紹
- WS2812B是集控制電路和發光電路於一體的LED光源元件
- 其控制IC為WS2812B,發光元件是5050RGBLED
- 電壓為5V,每個單位的峰值電流為60ma
- 燈帶為三線制,VCC GND DIN分別為電源+、電源-、信號
- 當使用外部電源時,外部電源-需要與Arduino的GND相連
接線測試
- 測試環境中可以直接使用Arduino的5V引腳直接供電。接法是
如果燈帶長度過長,則需要外接電源,其接線如圖所示:
編寫程序
#include <Adafruit_NeoPixel.h> //引入頭文件 #ifdef __AVR__ #include <avr/power.h> #endif #define LED_PIN 3//定義信號輸出引腳 #define LED_COUNT 144//定義LED燈個數 Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);//創建燈條對象
void setup() { //燈條初始化 strip.begin(); strip.show(); }
void loop() { for(int i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, strip.Color(255, 0, 0)); //以RGB形式控制燈顏色常亮 } strip.show(); }
關於Adafruit_NeoPixel中的HSV顏色模型
在Adafruit_NeoPixel中可以以RGB的色彩模型來控制紅、綠、藍三個顏色的燈光來合成各種色彩,還可以以HSV的色彩模型控制燈光的色相、飽和度、亮度對色彩進行調整。
通過HSV控制的優點是可以更方便的控制燈光的亮度、調整顏色更符合人的直覺。
HSV中H的參數范圍為0-65535
S:飽和度 調整范圍0-255
V:亮度 調整范圍 0-255
具體使用方法參見以下代碼:
//呼吸燈效果 #define ADD true #define SUB false boolean stat1 = true; //呼吸狀態反轉標志 int val = 0; //呼吸亮度變量 uint32_t hsvcolor = strip.ColorHSV(170*256,255, val); void fadeinout(uint32_t hsvcolor){ hsvcolor = strip.ColorHSV(170*256,255, val); for(int i=-1;i<150;i++){ strip.setPixelColor(i, hsvcolor); } if(val>=170) stat1 = SUB; if(val<=0) stat1 = ADD; strip.show(); //delay(20); if(stat1==SUB) val -= 5; else if(stat1==ADD) val += 5; }