有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]