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 setup() {
//灯条初始化
strip.begin();
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;
}