diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7d721a9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +**/.build* +.vscode \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..87aced2 --- /dev/null +++ b/readme.md @@ -0,0 +1,95 @@ +# RGB灯条驱动库 + +![_453de8b7-7edc-4efc-94c3-809a46000e66](https://img.pawpaw.cn:4430/assets/1699707514504RmN8t1mh.jpeg) + +## 简介 +`lib_rgb` 是一个用于控制RGB灯条的C语言库,提供了一系列功能,比如颜色渐变、呼吸灯效果和色调循环等。它支持通过RGB和HSV颜色空间来控制灯条的颜色输出。 + +## 功能 +- **颜色渐变**:通过逐步调整RGB值来模拟呼吸灯效果。 +- **色调循环**:在HSV颜色空间中循环改变色调以实现颜色渐变。 +- **颜色转换**:将HSV颜色值转换为RGB颜色值。 +- **颜色填充**:将单一颜色填充到整个RGB条中。 +- **RGB灯条驱动**:启动一个永久循环,持续更新RGB灯条的颜色。 +- **HSV颜色循环驱动**:驱动HSV颜色空间中的颜色循环,以实现连续的颜色渐变效果。 + +## 使用方法 + +### 包含头文件 +在你的项目中包含`rgb_effect.h`文件。 + +```c +#include "rgb_effect.h" +``` + +### 快速开始 + +如果你想要一个开箱即用的持续的颜色渐变效果,可以使用`cycleRGB_driver`或`cycleHSV_driver`函数。 + +注意:当前用于驱动LED组的默认的IO,定义在`Tile[1]`的`4A3`端口上,因此你需要添加对tile的声明。 + +```c +par +{ + // 启动RGB颜色渐变驱动 + on tile[1]: cycleRGB_driver(); +} +``` + +或者: + +```c +par +{ + // 启动HSV颜色循环驱动 + on tile[1]: cycleHSV_driver(); +} +``` + +### 初始化颜色和方向 + +在使用颜色渐变或色调循环功能之前,需要初始化一个颜色值和渐变方向。由于灯条的默认颜色排列为GRB,因此你需要注意颜色的顺序。 + +```c +uint32_t color = 0x00FF00; // 红色 +GradientDirection direction = INCREMENTING; // 开始时亮度递增 +``` + +### 调用颜色渐变函数 +使用`cycleRGB`函数来实现呼吸灯效果。 + +```c +uint32_t new_color = cycleRGB(color, &direction); +``` + +### 调用色调循环函数 +使用`cycleHSV`函数在HSV颜色空间中循环改变色调。 + +```c +uint32_t hue = 0; // 色调初始化 +uint32_t new_color = cycleHSV(&hue); +``` + +### 输出颜色到RGB灯条 +使用`output_rgb_array`函数将颜色数组输出到RGB灯条。 + +```c +uint32_t rgb_array[] = {0x00FF00, 0xFF0000, 0x0000FF}; // 红绿蓝 +output_rgb_array(rgb_array, 3); +``` + +## 注意事项 +- 该库假设使用的是一个链式单向传递Address数据的RGB LED灯条,并默认适配 *瑞飞2121 RT23-RGBCSH-I3W1-12* ,如果你的灯条有不同的配置,可能需要适当修改代码。 +- `lib_rgb`库中的一些函数包含无限循环,确保你的系统有适当的机制来安全地退出或中断执行。 + +## 路线图 + +- [ ] 当RGB_MAX等值超限时,raise error +- [ ] 为绘制RGB的函数添加可合并选项,以减少资源占用 +- [ ] 添加更多应用光效 +- [ ] 音频响度响应 + +## 贡献 +如果你有任何改进意见或者发现了bug,请通过issues或pull requests来提交。 + +感谢使用`lib_rgb`! \ No newline at end of file