有47人阅读过
FastLED笔记
发布于2022/07/21 更新于2022/07/22
[ 教程仅保证更新时有效,请自行测试。]
[ 教程仅保证更新时有效,请自行测试。]
#include "FastLED.h" // 此示例程序需要使用FastLED库
#define NUM_LEDS 128 // LED灯珠数量
#define DATA_PIN 3 // Arduino输出控制信号引脚
//#define CLOCK_PIN 13 // 时钟线引脚(带时钟线的信号需要)
#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 LED_GO 21 // 指定灯珠
#define Speed 100 // 速度
#define Delay_time 5000 // 延时时间
#define twinkleInterval 100 // 闪烁间隔时间 (毫秒)
#define twinkleChance 200 // 闪烁数量,数值越大闪烁越多(0-255)
#define Total_time 100000 // 程序运行总时长(ms)
uint8_t max_bright = 128; // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高
CRGB leds[NUM_LEDS]; // 建立灯具
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); // 设置光带亮度
}
/*常用参数
*
leds[0] = CRGB :: Red; //颜色首字母要大写
leds[0] = CRGB (0,0,0) //每个值用逗号分开,可以是变化的值
fill_solid(leds,10,CRGB::Green); //从开头数,10颗灯,颜色为green
fill_solid(leds+9,10,CRGB::Green); //从10灯数,10颗灯,颜色为green
leds[0].r = 255; // 将光带上第1个LED灯珠的RGB数值中R数值设置为255
leds[0].g = 125; // 将光带上第1个LED灯珠的RGB数值中G数值设置为255
leds[0].b = 0; // 将光带上第1个LED灯珠的RGB数值中B数值设置为0
fill_rainbow(leds+5, 30, 0, 1) //将leds光带的6-36个灯珠设置为渐变彩虹色。起始色调数值为0。相邻LED灯珠色调差为1
fill_gradient_RGB(leds, 0, CRGB::Red, 29, CRGB::Blue) //将leds光带的从头数30个灯珠设置为渐变色。灯带头部起始颜色为红色。灯带尾部结束颜色为蓝色。灯带中间为由红色到蓝色的渐变色。
EVERY_N_MILLISECONDS(500){} // {}中的程序运行时间为500ms
fadeToBlackBy( leds, NUM_LEDS, 10); //将灯的亮度调低10 (0-255)
*/
void green(){
fill_solid(leds,NUM_LEDS, CRGB::Green);
FastLED.show();
delay(Delay_time);
FastLED.clear();
}
void red(){
fill_solid(leds,NUM_LEDS, CRGB::Red);
FastLED.show();
delay(Delay_time);
FastLED.clear();
}
void waterflow(){
EVERY_N_MILLISECONDS( Total_time ){
for (int i=0; i<NUM_LEDS-1; i++){
leds[i]= CRGB (0, 255,0);
leds[i+1]=CRGB::Red;
FastLED.show();
FastLED.clear();
delay(Speed);
}}
}
void color_stay(){
fill_solid(leds,NUM_LEDS,CRGB::Red);
FastLED.show();
delay(Delay_time);
}
void rainbow(){
uint8_t beginHue = 0;
uint8_t deltaHue = 2;
fill_rainbow(leds+2, NUM_LEDS-2, beginHue, deltaHue);
FastLED.show();
delay(25);
}
void gradient(){
fill_gradient_RGB(leds, 0, CRGB::Red, 63, CRGB::Yellow);
FastLED.show();
delay(25);
}
void random_leds(){
int pos = random8(NUM_LEDS);
EVERY_N_MILLISECONDS( twinkleInterval ) {
if( random8() < twinkleChance) {
leds[pos] = ColorFromPalette( PartyColors_p, random8(255), 128, LINEARBLEND);
}
}
EVERY_N_MILLISECONDS( 20 ) {
fadeToBlackBy( leds, NUM_LEDS, 10);
}
FastLED.show();
delay(50);
}
void ss(){
for (int i=0; i<60; i++){
leds[i]=CRGB::Red;
FastLED.show();
FastLED.clear();
delay(100);
}
}
void mm(){
for (int i=0; i<60; i++){
leds[i] = CRGB :: Green;
FastLED.show();
FastLED.clear();
delay(600);
}
}
void loop () {
//green();
//red();
//waterflow();
//color_stay();
//rainbow();
//gradient();
//random_leds();
ss();
//mm();
} // loop()
- 一般[0]
- 很赞[0]
- 没用[0]
- 垃圾[0]
- 无语[0]