570
文章
·
28768
阅读
570
文章
·
28768
阅读

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

继续阅读:

扫一扫,手机浏览手机访问本站