| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #ifndef USER_WS2812B_H__
- #define USER_WS2812B_H__
- #include <stdint.h>
- #include <stdbool.h>
- #include "define.h"
- #include "user_spi.h"
- #define USER_WS2812B_INTERVAL 10
- #define WS2812B_NORMAL_RGB 0x00FF00
- #define WS2812B_BLE_RGB 0x00FF40
- #define WS2812B_CANID_ERROR_RGB 0xFFFF00
- #define WS2812B_OFFLINE_RGB 0xFFFF00
- #define WS2812B_LOW 0xC0
- #define WS2812B_HIGH 0xF0
- #define FLICKER_DELAYTIME_DEFAULT 100 / USER_WS2812B_INTERVAL
- #define ID_ERROR_FLICKER_DEFAULT 1000 / USER_WS2812B_INTERVAL
- #define OFFLINE_FLICKER_DEFAULT 200 / USER_WS2812B_INTERVAL
- #define BREATH_SPEED_DEFAULT 2000 / USER_WS2812B_INTERVAL
- typedef enum
- {
- WS2812B_QUEUE_TIME = 0,
- WS2812B_QUEUE_INT = 1,
- }USER_WS2812B_QUEUE_TYPE;
- typedef enum{
- WS2812B_ALL_ALARM_RST = 0,
- WS2812B_ALL_ALARM_BLE = 1,
- WS2812B_ALL_ALARM_CAN_IDX_ERROR = 2,
- WS2812B_ALL_ALARM_OFFLINE = 3,
- WS2812B_ALL_ALARM_LOCK = 31,
- }ws2812b_all_alarm_stat_e;
- typedef enum{
- WS2812B_FLICKER_NULL = 0,
- WS2812B_DARK = 1,
- WS2812B_BRIGHT = 2,
- WS2812B_FLICKER_ON = 3,
- WS2812B_BREATH_ON = 4,
- WS2812B_TAIL_ON = 5,
- }ws2812b_flicker_type_e;
- typedef struct{
- uint8_t idx;
- bool txStat;
- uint32_t alarm_stat;
- bool change;
- bool bright_stat; //灯是否亮
- ws2812b_flicker_type_e flicker_type;
- uint32_t flicker_delaytime; //闪烁间隔时间
- uint32_t delaytime; //流水灯延时时间
- uint8_t breath_bright; //呼吸灯亮度
- uint8_t count; //灯珠数量
- int tail_idx; //流水灯当前位置
- uint8_t tail_step; //流水灯拖尾长度
- bool tail_dir; //流水灯方向,true反向,false正向
- uint8_t *rgbValue;
- uint8_t rValue;
- uint8_t gValue;
- uint8_t bValue;
- }user_ws2812b_work_s;
-
- void vUser_ws2812b_init(void);
- void vUser_ws2812b_task_start(void);
- void vUser_ws2812b_set_alarm_view(uint8_t idx, ws2812b_all_alarm_stat_e alarmStat, bool stat);
- void vUser_ws2812b_set_normal_stat(uint8_t idx);
- void vUser_ws2812b_set_tx_stat(uint8_t idx, bool stat);
- void vUser_ws2812b_set_lock_stat(uint8_t idx, bool lock, ws2812b_flicker_type_e type, uint8_t r, uint8_t g, uint8_t b, uint32_t timeValue);
- #ifdef __cplusplus
- }
- #endif
- #endif // USER_WS2812B_H__
- /** @} */
|