【Arduino库之:FastLED库】

第一:基础

        led [ 0 ] = CRGB::Red;  //为第一个灯珠设置红色

        FastLED.show();   //这个作用才会显示

示例程序:

#include

#define NUM_LEDS 8

#define DATA_PIN 7

#define CLOCK_PIN 13

CRGB leds[NUM_LEDS];

CRGB myGRBcolor(0, 0, 255);

void setup() {

  FastLED.addLeds(leds, NUM_LEDS);

  FastLED.setBrightness(255);

}

void loop() {

  for (int i = 0; i < 255; i++) {

    myGRBcolor.r = 0;

    myGRBcolor.g =i;

    myGRBcolor.b = 0;

    fill_solid(leds, NUM_LEDS, myGRBcolor);

    FastLED.show();

  }

  delay(1000);

}

第二:相当于增加了批量显示

        fill_solid(leds, number , CRGB::Color) ; //leds 是建立的对象起始地址,如果不想要从第一个LED开始显示,那就对应开始的地址 : leds + i ,对number个led点亮为color,这里的起始到结尾以及颜色都是可以修改的

        FastLED.show();  //同样要搭配这个函数

示例程序:

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

#define NUM_LEDS 21             // LED灯珠数量

#define LED_DT 7                // Arduino输出控制信号引脚

#define LED_TYPE WS2812         // LED灯带型号

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

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

CRGB leds[NUM_LEDS];     // 建立光带leds

//HSV方法定义颜色  

CHSV myHSVcolor(80,255,255);    //HSV方法定义颜色  myHSVcolor(色调,饱和度,明亮度)

void setup() {

  LEDS.addLeds(leds, NUM_LEDS);  // 初始化光带

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

}

void loop () {                

  //以下演示变色条反复摆动

  for (int i = 0; i < NUM_LEDS; i++){

    myHSVcolor.h+=10;  //修改HSV定义颜色的单一数值

    fill_solid(leds+i, 3, myHSVcolor);

    FastLED.show();

    delay(50);

  }  

  for (int i = NUM_LEDS; i >0 ; i--){

    myHSVcolor.h+=10;  //修改HSV定义颜色的单一数值

    fill_solid(leds+i, 3, myHSVcolor);

    FastLED.show();

    delay(50);

  }

}

第三:自定义颜色

    CRGB myRGB( 40,50,60 ) ;  //这里的40 50 60 对应RGB的值,使用时直接无缝替换Red等

    //当然这里的RGB数值并不是定义了就不变量,可以通过myRGB.r = 20 ; 设置r也就是红色为20

    //来修改r值,如果一直变化 ,可以达到渐变的效果

第四:直观的显示颜色的方法 HSV

    CHSV myHSV ( 30 ,40 ,50 ) ;   //   分别对应色调,饱和度,明亮度 范围都是0~255

    //饱和度在最大值时达到本来颜色

    //同样可以修改

    myHSV.h++;

第五:更加灵活的显示方式彩虹rainbow显示法:

    fill_rainbow( leds , 30 , 0) ;  //分别对应对象起始地址,显示个数,色盘的起始色                (与360度 为一圈对应)

    //上面这里命令似乎有点问题,这个彩虹渐变的间隔怎样,就是每两个灯珠之间的H                值相差多少,它是一个默认值,下面这个命令就可以修改了,只是加了一个最后的参数值

    fill_ranbow( leds ,30 ,0 ,5) ; //这里的5就是差值

第六:另一个灵活的显示方式

    //上面的方式其实有一个弊端,它的亮度值是不可以调节的,如果想使用渐变的过程                中亮度值也要改变,那么就推荐使用这个函数

    fill_fradient_RGB(leds , start ,CRGB::Color , end ,CRGB::Color );

    //这个是标记从开始灯珠以及对应颜色一直到结束灯珠以及对应颜色

    //中间的fastled库会自动渐变

    //改变亮度值

    fill_gradient_RGB ( leds, 0 ,CRGB( 20,0,0), 30 , CRGB ( 20 , 20 , 30 ));

    //这里的CRGB不可以和CHSV可以替换

    //那想要替换怎么办呢

    fill_gradient( leds , start , CHSV () , end , CHSV ( ) , mode ) ;

    //SHORTEST_HUES 表示mode中沿着短的路线走,对应LONGEST_HUES

第七: 自带的光带模式

    fill_palette ( leds ,30, start _color_number ,8 ,OceanColors_p,255,LINEARBLEND );      

        //就是填充色板,他有一个自带的色板

        //leds是灯带对象的名字。

        //30代表灯带的灯珠数量。

        //start_color_number 起始颜色的序号

         //8 是灯珠色差   255是亮度

         //RainbowColors_p   色板的名称

         //有很多色板, OceanColors_p ,CloudColors_p,LavaColors_p,ForestColors_p

         //RainbowColors_p,RainbowStripeColors_p,PartyColors_p,HeatColors_p

        //255是亮度。

        //LINEARBLEND 最后一个是颜色过渡效果,LINEARBLEND是一种线性过渡效果 ,非NOBLEND。

你可能感兴趣的:(NANO,UNO,单片机)