可以直接在 FastLED 库的 GitHub 源码中找到 fill_rainbow 的实现代码。以下是具体获取方法:
1. 访问 FastLED 官方 GitHub 仓库
FastLED 库的源码托管在 GitHub 上:
https://github.com/FastLED/FastLED
2. 定位 fill_rainbow 函数源码
fill_rainbow 的实现位于以下文件中:
文件路径: FastLED/hsv2rgb.cpp
在文件中搜索 fill_rainbow,会找到如下代码片段:
void fill_rainbow( struct CRGB* pFirstLED, int numToFill,
uint8_t initialhue,
uint8_t deltahue )
{
CHSV hsv;
hsv.hue = initialhue;
hsv.val = 255;
hsv.sat = 240;
for( int i = 0; i < numToFill; i++) {
pFirstLED = hsv;
hsv.hue += deltahue;
}
}
3. 代码解析
输入参数:
pFirstLED: LED 数组指针。
numToFill: 需要填充的 LED 数量。
initialhue: 起始色相值(0-255)。
deltahue: 相邻 LED 的色相差值。
实现逻辑:
初始化一个 CHSV 结构体(HSV 颜色模型)。
固定饱和度(sat = 240)和亮度(val = 255)。
遍历每个 LED,为其分配递增的色相值,并通过 hsv2rgb 自动转换为 RGB 颜色。
4. 本地查看源码(通过 Arduino IDE)
如果你已通过 Arduino IDE 安装了 FastLED 库,可以直接在本地找到源码:
路径:
你的Arduino安装目录/libraries/FastLED/src/hsv2rgb.cpp
5. 进阶:修改自定义彩虹效果
如果你想自定义彩虹行为(例如修改饱和度或亮度),可以:
在本地库中修改 hsv2rgb.cpp 的 fill_rainbow 函数。
或直接在自己的代码中复制此函数并重写。
6. 其他相关函数
FastLED 还提供了其他彩虹生成函数,例如:
fill_gradient(): 更通用的渐变填充。
fill_rainbow_circular(): 环形灯带的彩虹效果。
这些函数的源码均在 hsv2rgb.cpp 或 colorutils.cpp 中。
通过阅读源码,你可以更灵活地控制 LED 的彩虹效果!