This branch is 19 commits behind PAWPAW/lib_rgb:main
2023-12-28 11:01:49 +08:00
2023-12-28 11:01:49 +08:00
2023-11-27 09:39:44 +08:00
2023-12-27 15:47:51 +08:00

RGB灯条驱动库

_453de8b7-7edc-4efc-94c3-809a46000e66

简介

lib_rgb 是一个用于控制RGB灯条的C语言库提供了一系列功能比如颜色渐变、呼吸灯效果和色调循环等。它支持通过RGB和HSV颜色空间来控制灯条的颜色输出。

功能

组件

功能 示例 备注
颜色渐变 app_rgb_cycle_breathing_example 通过逐步调整RGB值来模拟呼吸灯效果。
色调循环 app_hsv_cycle_example 在HSV颜色空间中循环改变色调以实现颜色渐变。
颜色转换 app_test_HSV_to_RGB 将HSV颜色值转换为RGB颜色值。
颜色填充 app_test_fill_gradient_with_groups 将单一颜色填充到整个RGB条中也可以将RGB条分组同时输出不同的颜色或响应。
幻彩渐变 app_hsv_cycle_per_rgb_example 每个灯珠独立的HSV渐变以获得颜色流动的效果。

高级应用

功能 示例 备注
响度可视化 待补充 通过检测音频样本中的响度实现RGB跟随音量大小跳动
色调循环&音量响应 app_cycleHSV_vol_level_example 根据响度值(-xdB~0dB),获取音量等级。
平滑&音量响应 app_vol_level_smooth_example 一种过渡效果当响度下降时逐级熄灭RGB而不是突变。
平滑&色调循环&音量响应 app_cycleHSV_vol_level_smooth_example 结合了HSV颜色渐变平滑过渡以及音量响应

使用方法

包含头文件

在你的项目中包含rgb_effect.h文件它是较高等级的灯效头文件用于实现各种灯效以及向RGB输出灯效

#include "rgb_effect.h"

或者直接包含visualize_volume.h它是最高等级的应用头文件用于实现可视化的响度。你需要为它创建一个线程并向它的缓存中写入音频样本以驱动RGB。

#include "visualize_volume.h"

//TODO: 后续我们会创建一个例程,帮助你快速构建一个线程安全的应用。

快速开始

如果你想要尝试开箱即用的持续的颜色渐变效果,可以使用examples/app_hsv_cycle_example/src/hsv_cycle_example.c中的hsv_cycle_example函数,具体的用法可以参考该示例。

注意当前用于驱动LED组的默认的IO定义在Tile[1]4A3端口上因此你需要添加对tile的声明。

#include <platform.h> // 包含对封装的定义,引用以使用 on tile[] 语法

extern "C"
{
    void hsv_cycle_example();
}

int main() // 定义主函数
{
    par
    {
        on tile[1]:
        {
            hsv_cycle_example();
        }
    }
    return 0; // 返回0表示程序正常结束
}

初始化颜色和方向

在使用颜色渐变或色调循环功能之前需要初始化一个颜色值和渐变方向。由于灯条的默认颜色排列为GRB因此你需要注意颜色的顺序。

uint32_t color = 0x00FF00; // 红色
GradientDirection direction = INCREMENTING; // 开始时亮度递增

调用颜色渐变函数

使用cycleRGB函数来实现呼吸灯效果。

uint32_t new_color = cycleRGB(color, &direction);

调用色调循环函数

使用cycleHSV函数在HSV颜色空间中循环改变色调。

uint32_t hue = 0; // 色调初始化
uint32_t new_color = cycleHSV(&hue);

输出颜色到RGB灯条

使用output_rgb_array函数将颜色数组输出到RGB灯条。

uint32_t rgb_array[] = {0x00FF00, 0xFF0000, 0x0000FF}; // 红绿蓝
output_rgb_array(rgb_array, 3);

注意事项

  • 该库假设使用的是一个链式单向传递Address数据的RGB LED灯条并默认适配 瑞飞2121 RT23-RGBCSH-I3W1-12 ,如果你的灯条有不同的配置,可能需要适当修改代码。
  • lib_rgb库中的一些函数包含无限循环,确保你的系统有适当的机制来安全地退出或中断执行。

路线图

  • 为绘制RGB的函数添加可合并选项以减少资源占用
  • 添加更多应用光效
    • RGB渐变
    • HSV渐变
    • 每个灯珠独立的HSV渐变
  • 音频响度响应
  • 使用fp/s32以增加HSV_to_RGB的计算效率
  • 提供音频响度响应的例程与说明

贡献

如果你有任何改进意见或者发现了bug请通过issues或pull requests来提交或贡献。

感谢使用lib_rgb

Description
用于控制RGB灯条的XC/C语言库
Readme 490 KiB
Languages
C 49.3%
Python 23.4%
XC 13.9%
Makefile 13.4%