Arduino驱动WS2812BLED灯带
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; }


浙公网安备 33010602011771号