/** * @file rgb.h * @brief 单颗 WS2812 RGB LED 控制 (RMT) * * 使用 RMT 外设驱动一颗 WS2812 / SK6812 等可寻址 RGB LED。 * 提供 RGB 直接设色与 HSV 设色, 调用即刷新, 无需手动 flush。 */ #ifndef RGB_H #define RGB_H #include #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 */