打印

FastLED 库的 GitHub 源码`​fill_rainbow`

[复制链接]
33|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2025-5-8 09:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 keer_zu 于 2025-5-8 10:00 编辑

可以直接在 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 的彩虹效果!

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1429

主题

12740

帖子

53

粉丝