user_ws2812b.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #ifndef USER_WS2812B_H__
  2. #define USER_WS2812B_H__
  3. #include <stdint.h>
  4. #include <stdbool.h>
  5. #include "define.h"
  6. #include "user_spi.h"
  7. #define USER_WS2812B_INTERVAL 10
  8. #define WS2812B_NORMAL_RGB 0x00FF00
  9. #define WS2812B_BLE_RGB 0x00FF40
  10. #define WS2812B_CANID_ERROR_RGB 0xFFFF00
  11. #define WS2812B_OFFLINE_RGB 0xFFFF00
  12. #define WS2812B_LOW 0xC0
  13. #define WS2812B_HIGH 0xF0
  14. #define FLICKER_DELAYTIME_DEFAULT 100 / USER_WS2812B_INTERVAL
  15. #define ID_ERROR_FLICKER_DEFAULT 1000 / USER_WS2812B_INTERVAL
  16. #define OFFLINE_FLICKER_DEFAULT 200 / USER_WS2812B_INTERVAL
  17. #define BREATH_SPEED_DEFAULT 2000 / USER_WS2812B_INTERVAL
  18. typedef enum
  19. {
  20. WS2812B_QUEUE_TIME = 0,
  21. WS2812B_QUEUE_INT = 1,
  22. }USER_WS2812B_QUEUE_TYPE;
  23. typedef enum{
  24. WS2812B_ALL_ALARM_RST = 0,
  25. WS2812B_ALL_ALARM_BLE = 1,
  26. WS2812B_ALL_ALARM_CAN_IDX_ERROR = 2,
  27. WS2812B_ALL_ALARM_OFFLINE = 3,
  28. WS2812B_ALL_ALARM_LOCK = 31,
  29. }ws2812b_all_alarm_stat_e;
  30. typedef enum{
  31. WS2812B_FLICKER_NULL = 0,
  32. WS2812B_DARK = 1,
  33. WS2812B_BRIGHT = 2,
  34. WS2812B_FLICKER_ON = 3,
  35. WS2812B_BREATH_ON = 4,
  36. WS2812B_TAIL_ON = 5,
  37. }ws2812b_flicker_type_e;
  38. typedef struct{
  39. uint8_t idx;
  40. bool txStat;
  41. uint32_t alarm_stat;
  42. bool change;
  43. bool bright_stat; //灯是否亮
  44. ws2812b_flicker_type_e flicker_type;
  45. uint32_t flicker_delaytime; //闪烁间隔时间
  46. uint32_t delaytime; //流水灯延时时间
  47. uint8_t breath_bright; //呼吸灯亮度
  48. uint8_t count; //灯珠数量
  49. int tail_idx; //流水灯当前位置
  50. uint8_t tail_step; //流水灯拖尾长度
  51. bool tail_dir; //流水灯方向,true反向,false正向
  52. uint8_t *rgbValue;
  53. uint8_t rValue;
  54. uint8_t gValue;
  55. uint8_t bValue;
  56. }user_ws2812b_work_s;
  57. void vUser_ws2812b_init(void);
  58. void vUser_ws2812b_task_start(void);
  59. void vUser_ws2812b_set_alarm_view(uint8_t idx, ws2812b_all_alarm_stat_e alarmStat, bool stat);
  60. void vUser_ws2812b_set_normal_stat(uint8_t idx);
  61. void vUser_ws2812b_set_tx_stat(uint8_t idx, bool stat);
  62. 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);
  63. #ifdef __cplusplus
  64. }
  65. #endif
  66. #endif // USER_WS2812B_H__
  67. /** @} */