Files
edc-mcu/components/rgb/rgb.h
T
2026-08-01 02:41:29 +08:00

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 */