FastLED Helper — FastLED 辅助工具
v1.0.0使用FastLED库控制ESP32/Arduino LED灯条。涵盖设置、颜色管理(CRGB/CHSV)、动画、调色板、电源管理和芯片特定配置。触发短语如"FastLED"、"LED灯条"、"WS2812"、"NeoPixel"、"APA102"、"LED动画"、"RGB LED"、"可寻址LED"。
0· 0·0 当前·0 累计
运行时依赖
无特殊依赖
安装命令
点击复制官方npx clawhub@latest install fastled-helper
镜像加速npx clawhub@latest install fastled-helper --registry https://cn.longxiaskill.com 镜像可用
本土化适配说明
FastLED Helper — FastLED 辅助工具 安装说明: 安装命令:["openclaw skills install fastled-helper"]
技能文档
FastLED 技能 FastLED 是一个用于控制可寻址 RGB LED 条(WS2812/NeoPixel、APA102/DotStar、LPD8806 等)的高性能库,支持 ESP32、Arduino 和其他平台。
核心设置 包括和 LED 数组
#include "FastLED.h"
#define NUM_LEDS 60
#define DATA_PIN 6
#define CLOCK_PIN 7 // 仅适用于 SPI芯片组
CRGB leds[NUM_LEDS]; // RGB 颜色数组,每个 LED 一个
初始化 LED 条(setup())
3 线芯片组(WS2812、NeoPixel 等):
void setup() {
FastLED.addLeds(leds, NUM_LEDS);
// 或:FastLED.addLeds(leds, NUM_LEDS);
}
4 线 SPI 芯片组(APA102、LPD8806 等):
void setup() {
// 使用硬件 SPI 引脚
FastLED.addLeds(leds, NUM_LEDS);
// 或使用自定义引脚
FastLED.addLeds(leds, NUM_LEDS);
// 使用自定义数据速率
FastLED.addLeds(leds, NUM_LEDS);
}
显示 LED
void loop() {
leds[0] = CRGB::Red; // 设置第一个 LED 为红色
FastLED.show(); // 将数据推送到条状 LED
delay(30); // 等待下一帧
}
颜色管理
CRGB - RGB 颜色空间
创建颜色:
// 个别通道
leds[i].r = 255;
leds[i].g = 128;
leds[i].b = 0;
// 构造函数
leds[i] = CRGB(255, 128, 0);
// 十六进制代码
leds[i] = 0xFF8000;
// 命名的 Web 颜色
leds[i] = CRGB::HotPink;
leds[i] = CRGB::DarkOrange;
// setRGB 方法
leds[i].setRGB(255, 128, 0);
常见预定义颜色:
CRGB::Black、CRGB::White、CRGB::Red、CRGB::Green、CRGB::Blue、CRGB::Yellow、CRGB::Cyan、CRGB::Magenta、CRGB::Orange、CRGB::Purple CRGB 方法:
leds[i].fadeToBlackBy(64); // 淡化 64/256(25%)
leds[i].fadeLightBy(64); // 变暗 64/256
leds[i].nscale8_video(200); // 缩放到 78% 亮度(视频缩放)
leds[i].nscale8(200); // 缩放到 78% 亮度(线性)
leds[i].maximizeBrightness(); // 最大化亮度(保持色调)
leds[i].invert(); // 颜色反转
CHSV - HSV 颜色空间
FastLED 使用 0-255 范围的所有 HSV 值(而不是 0-360/0-100):
// 色调(0-255)、饱和度(0-255)、值/亮度(0-255)
leds[i] = CHSV(160, 255, 255);
// 使用命名的色调常数
leds[i] = CHSV(HUE_RED, 255, 255);
leds[i] = CHSV(HUE_GREEN, 200, 255);
leds[i] = CHSV(HUE_AQUA + 10, 255, 200);
// setHSV 方法
leds[i].setHSV(160, 255, 255);
色调基点:
HUE_RED(0)、HUE_ORANGE(32)、HUE_YELLOW(64)、HUE_GREEN(96)、HUE_AQUA(128)、HUE_BLUE(160)、HUE_PURPLE(192)、HUE_PINK(224) 颜色转换:
CHSV hsvColor(160, 255, 255);
CRGB rgbColor = hsvColor; // 自动转换
LED 控制函数
填充函数
// 填充所有 LED 为纯色
fill_solid(leds, NUM_LEDS, CRGB::Red);
// 填充范围为纯色
fill_solid(&(leds[10]), 20, CRGB::Blue);
// 填充渐变色(从开始颜色到结束颜色)
fill_gradient_RGB(leds, NUM_LEDS, CRGB::Red, CRGB::Blue);
// 填充 HSV 渐变色
fill_gradient(leds, NUM_LEDS, CHSV(0, 255, 255), CHSV(160, 255, 255));
// 填充 HSV 渐变色(3 色)
fill_gradient(leds, 0, CHSV(0,255,255), NUM_LEDS/2, CHSV(100,255,255), NUM_LEDS-1, CHSV(200,255,255), SHORTEST_HUES);
// 填充彩虹色
fill_rainbow(leds, NUM_LEDS, 0, 5);
复制/移动函数
// 复制单个 LED
leds[i] = leds[j];
// 复制范围
memmove(&leds[dest], &leds[src], 10 sizeof(CRGB));
memmove8(&leds[dest], &leds[src], 10 sizeof(CRGB)); // 在 AVR 上更快
// 移动 LED(将所有 LED 移动一个位置)
memmove(&leds[1], &leds[0], (NUM_LEDS-1) * sizeof(CRGB));
leds[0] = CRGB::Black; // 清除第一个
褪色所有到黑色
fadeToBlackBy(leds, NUM_LEDS, 64);
变暗所有
nscale8(leds, NUM_LEDS, 200);
亮度和功率
// 设置全局亮度(0-255)
FastLED.setBrightness(128);
// 获取当前功率使用情况(毫瓦)
uint16_t milliwatts = calculate_unscaled_power_mW(leds, NUM_LEDS);
// 限制功率使用
FastLED.setMaxPowerInVoltsAndMilliamps(5, 1500);
颜色调色板
内置调色板
CRGBPalette16 myPal = RainbowColors_p;
CRGBPalette16 myPal = RainbowStripeColors_p;
CRGBPalette16 myPal = OceanColors_p;
CRGBPalette16 myPal = CloudColors_p;
CRGBPalette16 myPal = LavaColors_p;
CRGBPalette16 myPal = ForestColors_p;
CRGBPalette16 myPal = PartyColors_p;
CRGBPalette16 myPal = HeatColors_p;
自定义渐变调色板
// 定义渐变调色板(存储在 PROGMEM 中)
DEFINE_GRADIENT_PALETTE(heatmap_gp) {
0, 0, 0, 0, // 黑色
128, 255, 0, 0, // 红色
224, 255,255, 0, // 亮黄色
255, 255,255,255 // 白色
};
// 激活
CRGBPalette16 myPal = heatmap_gp;
// 使用
uint8_t index = 128;
leds[i] = ColorFromPalette(myPal, index);
leds[i] = ColorFromPalette(myPal, index, 128);
leds[i] = ColorFromPalette(myPal, index, 255, NOBLEND);
调色板混合
CRGBPale