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
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
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值,如果一直变化 ,可以达到渐变的效果
CHSV myHSV ( 30 ,40 ,50 ) ; // 分别对应色调,饱和度,明亮度 范围都是0~255
//饱和度在最大值时达到本来颜色
//同样可以修改
myHSV.h++;
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。