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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM