ffillPalette函数使用色板将LED光带设置为渐变色。FastLED.show函数将已经更新显示LED的颜色。在以下的示例程序中,loop函数中虽然有 leds[0] = CRGB::Red; 语句将LED颜色进行了设置,但是因为程序中没有FastLED.show函数,Arduino在运行这段示例程序后不会点亮LED。也就是说,我们看到的这段示例程序运行结果是完全看不到任何点亮的LED的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include "FastLED.h" // 此示例程序需要使用FastLED库 #define NUM_LEDS 30 // LED灯珠数量 #define DATA_PIN 9 // Arduino输出控制信号引脚 #define LED_TYPE WS2812 // LED灯带型号 #define COLOR_ORDER GRB // RGB灯珠中红色、绿色、蓝色LED的排列顺序 uint8_t max_bright = 128; // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高 CRGB leds[NUM_LEDS]; // 建立光带leds void setup() { LEDS.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); // 初始化光带 FastLED.setBrightness(max_bright); // 设置光带亮度 } void loop() { leds[0] = CRGB::Red; // 设置光带中第一个灯珠颜色为红色,leds[0]为第一个灯珠,leds[1]为第二个灯珠 delay(50); // 等待500毫秒 } |
要解决这个问题,我们只需要在上面程序中 leds[0] = CRGB::Red; 后面增加 FastLED.show(); 语句就可以了。如下面示例程序中所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include "FastLED.h" // 此示例程序需要使用FastLED库 #define NUM_LEDS 30 // LED灯珠数量 #define DATA_PIN 9 // Arduino输出控制信号引脚 #define LED_TYPE WS2812 // LED灯带型号 #define COLOR_ORDER GRB // RGB灯珠中红色、绿色、蓝色LED的排列顺序 uint8_t max_bright = 128; // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高 CRGB leds[NUM_LEDS]; // 建立光带leds void setup() { LEDS.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); // 初始化光带 FastLED.setBrightness(max_bright); // 设置光带亮度 } void loop() { leds[0] = CRGB::Red; // 设置光带中第一个灯珠颜色为红色,leds[0]为第一个灯珠,leds[1]为第二个灯珠 FastLED.show(); // 更新LED色彩 delay(50); // 等待500毫秒 } |
在使用FastLED库控制LED时,我们每一次更新了LED的颜色设置以后,都需要 FastLED.show(); 执行语句指令才能将我们刚刚设置好的LED颜色在LED灯珠上显示出来。这一点非常重要,请在使用使用FastLED库控制LED时务必注意这一点。