forked from PAWPAW/lib_rgb
efeed1c18cf4e0607f9077ce56205b5eca7a867d
RGB灯条驱动库
简介
lib_rgb 是一个用于控制RGB灯条的C语言库,提供了一系列功能,比如颜色渐变、呼吸灯效果和色调循环等。它支持通过RGB和HSV颜色空间来控制灯条的颜色输出。
功能
-
响度可视化:通过检测音频样本中的响度,实现RGB跟随音量大小跳动
-
颜色渐变:通过逐步调整RGB值来模拟呼吸灯效果。
-
色调循环:在HSV颜色空间中循环改变色调以实现颜色渐变。
-
颜色转换:将HSV颜色值转换为RGB颜色值。
-
颜色填充:将单一颜色填充到整个RGB条中,也可以将RGB条分组,同时输出不同的颜色或响应
-
音量响应:根据响度值(-xdB~0dB),获取音量等级
使用方法
包含头文件
在你的项目中包含rgb_effect.h文件。
#include "rgb_effect.h"
快速开始
如果你想要尝试开箱即用的持续的颜色渐变效果,可以使用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
Languages
C
49.3%
Python
23.4%
XC
13.9%
Makefile
13.4%
