更新README.md

This commit is contained in:
2023-11-12 23:55:42 +08:00
parent 76b4f38af0
commit ade6060c05

109
README.md Normal file
View File

@@ -0,0 +1,109 @@
# 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条分组同时输出不同的颜色或响应
- **音量响应**:根据响度值(-xdB~0dB),获取音量等级,以实现响度可视化
- **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的函数添加可合并选项以减少资源占用
- [ ] 添加更多应用光效
- [x] RGB渐变
- [x] HSV渐变
- [ ] 每个灯珠独立的HSV渐变
- [x] 音频响度响应
- [ ] 使用fp/s32以增加`HSV_to_RGB`的计算效率
## 贡献
如果你有任何改进意见或者发现了bug请通过issues或pull requests来提交。
感谢使用`lib_rgb`