FastLED笔记
#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
//LEDS.addLeds
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 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()