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;  
         
}

 

posted @ 2020-12-29 14:10  相关人士  阅读(1828)  评论(0)    收藏  举报