570
文章
·
28761
阅读
570
文章
·
28761
阅读

有39人阅读过 FastLED库 RGBW转RGB, 控制4通道灯
发布于2022/07/22 更新于2022/07/22
[ 教程仅保证更新时有效,请自行测试。]

#include "FastLED.h"            // 此示例程序需要使用FastLED库


#define NUM_LEDS 64             // LED灯珠数量(不小于RGBW灯*4/3)

#define DATA_PIN 3              // Arduino输出控制信号引脚

#define LED_TYPE WS2812B        // LED灯带型号,TM1803,TM1804,TM1809,WS2811,WS2812,WS2812B,APA104,UCS1903,UCS1903N,GW6205,GW6205_400,WS2801,SM16716,LPD8806,P9813,APA102,

#define COLOR_ORDER GRB         // RGB灯珠中红色、绿色、蓝色LED的排列顺序


#define RGBW_NUM  19            //RGBW第x灯

#define R 255                   //RGBW 红色通道

#define G 255                   //RGBW 绿色通道

#define B 255                   //RGBW 蓝色通道

#define W 255                   //RGBW 白色通道



uint8_t max_bright = 128;       // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高


CRGB leds[NUM_LEDS];     // 建立灯具


void RGBW(){

    int a=RGBW_NUM;

    int b=a*4%3; 

    

    if(b==0){

          int c=a*4/3; 

          int x=floor(c);

          leds[x-2]= CRGB (0,0,R);

          leds[x-1] = CRGB (G,B,W);

          FastLED.show();

          delay(1000);   

    }

     else if(b==1){

          int d=a*4/3;

          int x=floor(d);

          leds[x-1]= CRGB (R,G,B);

          leds[x] = CRGB (W,0,0);

          FastLED.show();

          delay(1000); 

          }  

     else{

          int e=a*4/3;  //  例RGBW第11灯x4/3=14+2  ==14.6666...,非0,非1

          int x=floor(e);  //  取整

          leds[x-1]= CRGB (0,R,G);  //第14灯

          leds[x] = CRGB (B,W,0);   //第15灯

          FastLED.show();

          delay(1000); 

          }

}


void setup() { 

  Serial.begin(9600);           // 启动串行通讯

  delay(1000);                  // 稳定性等待


  LEDS.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);  // 初始化灯具(无时钟线)

  //LEDS.addLeds<LED_TYPE, DATA_PIN, CLOCK_PIN, COLOR_ORDER>(leds, NUM_LEDS); // 初始化灯具(带时钟线)

  

  FastLED.setBrightness(max_bright);                            // 设置光带亮度


  RGBW();

}


文章对你有帮助吗?
  • 一般[0]
  • 很赞[0]
  • 没用[0]
  • 垃圾[0]
  • 无语[0]
扫一扫,手机浏览手机访问本站