#ifndef USER_WS2812B_H__ #define USER_WS2812B_H__ #include #include #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__ /** @} */