69 lines
1.4 KiB
C
69 lines
1.4 KiB
C
/**
|
|
* @file rgb.h
|
|
* @brief 单颗 WS2812 RGB LED 控制 (RMT)
|
|
*
|
|
* 使用 RMT 外设驱动一颗 WS2812 / SK6812 等可寻址 RGB LED。
|
|
* 提供 RGB 直接设色与 HSV 设色, 调用即刷新, 无需手动 flush。
|
|
*/
|
|
|
|
#ifndef RGB_H
|
|
#define RGB_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief 初始化 RGB LED
|
|
* @param gpio 数据引脚编号
|
|
*/
|
|
void rgb_init(int gpio);
|
|
|
|
/**
|
|
* @brief 设置 RGB 颜色 (立即生效)
|
|
* @param r 红色 0~255
|
|
* @param g 绿色 0~255
|
|
* @param b 蓝色 0~255
|
|
*/
|
|
void rgb_set(uint8_t r, uint8_t g, uint8_t b);
|
|
|
|
/**
|
|
* @brief 以 HSV 色彩设置颜色 (立即生效)
|
|
* @param h 色相 0~359
|
|
* @param s 饱和度 0~100
|
|
* @param v 明度 0~100
|
|
*/
|
|
void rgb_set_hsv(uint16_t h, uint8_t s, uint8_t v);
|
|
|
|
/**
|
|
* @brief 熄灭 LED
|
|
*/
|
|
void rgb_off(void);
|
|
|
|
/* ================================================================
|
|
* 系统状态指示 (供 main 循环读取)
|
|
* ================================================================ */
|
|
|
|
typedef enum {
|
|
RGB_STATE_IDLE = 0, /* 待机: 黄灯慢闪 */
|
|
RGB_STATE_DONE = 1, /* 完成: 绿灯慢闪 */
|
|
} rgb_state_t;
|
|
|
|
/**
|
|
* @brief 设置系统指示状态
|
|
*/
|
|
void rgb_set_state(rgb_state_t state);
|
|
|
|
/**
|
|
* @brief 获取当前系统指示状态
|
|
*/
|
|
rgb_state_t rgb_get_state(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* RGB_H */
|