修正呼吸灯,添加注释

This commit is contained in:
dgjames 2025-01-18 11:04:08 +08:00
parent 1db683abda
commit c172877ce5
4 changed files with 56 additions and 15 deletions

1
.gitignore vendored

@ -42,3 +42,4 @@ settings/
cconfig.h cconfig.h
Arduino-IRremote-master Arduino-IRremote-master
*.pack *.pack
chip/

@ -7,14 +7,32 @@ rt_thread_t led_breath_thread = RT_NULL;
// 灯是否处于特定颜色还是闪烁状态 // 灯是否处于特定颜色还是闪烁状态
uint8_t LED_Blink_State[LED_NUM] = {LED_NOT_BLINKING}; uint8_t LED_Blink_State[LED_NUM] = {LED_NOT_BLINKING};
// 呼吸灯是否开启
uint8_t LED_Breath_State = LED_BREATH_OFF;
// 灯闪烁颜色缓存 // 灯闪烁颜色缓存
RGBColor_TypeDef LED_Blink_Color[LED_NUM] = {0}; RGBColor_TypeDef LED_Blink_Color[LED_NUM] = {0};
const RGBColor_TypeDef LED_OFF = {0, 0, 0}; const RGBColor_TypeDef LED_OFF = {0, 0, 0};
const RGBColor_TypeDef LED_ON = {255, 255, 255}; const RGBColor_TypeDef LED_ON = {255, 255, 255};
/**
* @brief LED的开关
* @param LedBreath_state / LED_BREATH_ON/LED_BREATH_OFF
*/
void LED_BreathTurn(uint8_t LedBreath_state)
{
LED_Breath_State = LedBreath_state;
if (LedBreath_state == LED_BREATH_OFF)
{
// rt_thread_suspend(led_breath_thread);
LED_SetMore(LED_BREATH_ID(1), LED_BREATH_ID(12), LED_OFF);
}
else if (LedBreath_state == LED_BREATH_ON)
{
// rt_thread_resume(led_breath_thread);
}
}
/** /**
* @brief LED的颜色或开关 * @brief LED的颜色或开关
* @param LedId LED的序号(0~LED_NUM-1) * @param LedId LED的序号(0~LED_NUM-1) LED_CHARGE_ID(x),LED_BREATH_ID(x)
* @param Color / LED_RED,LED_BLUE,LED_OFF,LED_ON() * @param Color / LED_RED,LED_BLUE,LED_OFF,LED_ON()
*/ */
void LED_Set(uint16_t LedId, RGBColor_TypeDef Color) void LED_Set(uint16_t LedId, RGBColor_TypeDef Color)
@ -25,13 +43,13 @@ void LED_Set(uint16_t LedId, RGBColor_TypeDef Color)
} }
/** /**
* @brief LED的颜色或开关 * @brief LED的颜色或开关
* @param LedId_begin LED的序号(0~LED_NUM-1) * @param LedId_begin LED的序号(0~LED_NUM-1) LED_CHARGE_ID(x),LED_BREATH_ID(x)
* @param LedId_end LED的序号(0~LED_NUM-1) * @param LedId_end LED的序号(0~LED_NUM-1) LED_CHARGE_ID(x),LED_BREATH_ID(x)
* @param Color / LED_RED,LED_BLUE,LED_OFF,LED_ON() * @param Color / LED_RED,LED_BLUE,LED_OFF,LED_ON()
*/ */
void LED_SetMore(uint16_t LedId_begin, uint16_t LedId_end, RGBColor_TypeDef Color) void LED_SetMore(uint16_t LedId_begin, uint16_t LedId_end, RGBColor_TypeDef Color)
{ {
for (int LedId = LedId_begin; LedId <=LedId_end ; LedId++) for (int LedId = LedId_begin; LedId <= LedId_end; LedId++)
{ {
LED_Blink_State[LedId] = 0; LED_Blink_State[LedId] = 0;
Set_LEDColor(LedId, Color); Set_LEDColor(LedId, Color);
@ -41,7 +59,7 @@ void LED_SetMore(uint16_t LedId_begin, uint16_t LedId_end, RGBColor_TypeDef Colo
/** /**
* @brief LED的闪烁 * @brief LED的闪烁
* @param LedId LED的序号(0~LED_NUM-1) * @param LedId LED的序号(0~LED_NUM-1) LED_CHARGE_ID(x),LED_BREATH_ID(x)
* @param Color LED_RED,LED_BLUE * @param Color LED_RED,LED_BLUE
*/ */
void LED_Blink(uint16_t LedId, RGBColor_TypeDef Color) void LED_Blink(uint16_t LedId, RGBColor_TypeDef Color)
@ -51,13 +69,13 @@ void LED_Blink(uint16_t LedId, RGBColor_TypeDef Color)
} }
/** /**
* @brief LED的闪烁 * @brief LED的闪烁
* @param LedId_begin LED的序号(0~LED_NUM-1) * @param LedId_begin LED的序号(0~LED_NUM-1) LED_CHARGE_ID(x),LED_BREATH_ID(x)
* @param LedId_end LED的序号(0~LED_NUM-1) * @param LedId_end LED的序号(0~LED_NUM-1) LED_CHARGE_ID(x),LED_BREATH_ID(x)
* @param Color LED_RED,LED_BLUE * @param Color LED_RED,LED_BLUE
*/ */
void LED_BlinkMore(uint16_t LedId_begin, uint16_t LedId_end, RGBColor_TypeDef Color) void LED_BlinkMore(uint16_t LedId_begin, uint16_t LedId_end, RGBColor_TypeDef Color)
{ {
for (int LedId = LedId_begin; LedId <=LedId_end ; LedId++) for (int LedId = LedId_begin; LedId <= LedId_end; LedId++)
{ {
LED_Blink_State[LedId] = 1; LED_Blink_State[LedId] = 1;
LED_Blink_Color[LedId] = Color; LED_Blink_Color[LedId] = Color;
@ -73,7 +91,7 @@ void led_blink_entry(void *parameter)
{ {
for (int LedId = 0; LedId < LED_NUM; LedId++) for (int LedId = 0; LedId < LED_NUM; LedId++)
{ {
if (LED_Blink_State[LedId]==LED_IS_BLINKING) if (LED_Blink_State[LedId] == LED_IS_BLINKING)
{ {
if (LED_Blink_ON) if (LED_Blink_ON)
{ {
@ -90,6 +108,9 @@ void led_blink_entry(void *parameter)
rt_thread_mdelay(500); rt_thread_mdelay(500);
} }
} }
/**
* @brief 线
*/
int led_blink_init(void) int led_blink_init(void)
{ {
led_blink_thread = rt_thread_create("led blink control thread", led_blink_entry, RT_NULL, 1024, 20, 20); led_blink_thread = rt_thread_create("led blink control thread", led_blink_entry, RT_NULL, 1024, 20, 20);
@ -103,7 +124,7 @@ int led_blink_init(void)
} }
/** /**
* @brief 0.5s判断各盏灯是否要翻转 * @brief
*/ */
void led_breath_entry(void *parameter) void led_breath_entry(void *parameter)
{ {
@ -112,6 +133,13 @@ void led_breath_entry(void *parameter)
{ {
for (int i = LED_BREATH_ID(1); i <= LED_BREATH_ID(12); i++) for (int i = LED_BREATH_ID(1); i <= LED_BREATH_ID(12); i++)
{ {
if (LED_Breath_State==LED_BREATH_OFF)
{
rt_thread_mdelay(100);
i = LED_BREATH_ID(1);
continue;
}
switch (count) switch (count)
{ {
case 0: case 0:
@ -128,13 +156,17 @@ void led_breath_entry(void *parameter)
break; break;
} }
RGB_Reflash(); RGB_Reflash();
rt_thread_delay(20); rt_thread_mdelay(500);
} }
count = (count + 1) % 3; count = (count + 1) % 3;
} }
} }
// MSH_CMD_EXPORT_ALIAS(led_breath_thread,BREATH, "BREATH LIGHT"); // MSH_CMD_EXPORT_ALIAS(led_breath_thread,BREATH, "BREATH LIGHT");
/**
* @brief 线
*/
int led_breath_init(void) int led_breath_init(void)
{ {
led_breath_thread = rt_thread_create("led breath control thread", led_breath_entry, RT_NULL, 1024, 20, 20); led_breath_thread = rt_thread_create("led breath control thread", led_breath_entry, RT_NULL, 1024, 20, 20);

@ -3,14 +3,17 @@
#define LED_IS_BLINKING 1 #define LED_IS_BLINKING 1
#define LED_NOT_BLINKING 0 #define LED_NOT_BLINKING 0
#define LED_BREATH_ON 1
#define LED_BREATH_OFF 0
#define LED_CHARGE_ID(i) (i+12-1) #define LED_CHARGE_ID(i) (i+12-1) //电源指示灯序号(1-12)
#define LED_BREATH_ID(i) (i-1) #define LED_BREATH_ID(i) (i-1) //呼吸灯序号(1-12)
extern void LED_Set(uint16_t LedId, RGBColor_TypeDef Color); extern void LED_Set(uint16_t LedId, RGBColor_TypeDef Color);
extern void LED_SetMore(uint16_t LedId_begin,uint16_t LedId_end, RGBColor_TypeDef Color); extern void LED_SetMore(uint16_t LedId_begin,uint16_t LedId_end, RGBColor_TypeDef Color);
extern void LED_Blink(uint16_t LedId, RGBColor_TypeDef Color); extern void LED_Blink(uint16_t LedId, RGBColor_TypeDef Color);
extern void LED_BlinkMore(uint16_t LedId_begin, uint16_t LedId_end, RGBColor_TypeDef Color); extern void LED_BlinkMore(uint16_t LedId_begin, uint16_t LedId_end, RGBColor_TypeDef Color);
extern void LED_BreathTurn(uint8_t LedBreath_state);
extern int led_blink_init(void); extern int led_blink_init(void);
extern int led_breath_init(void); extern int led_breath_init(void);

@ -15,6 +15,11 @@ void ledblinkm(int argc, char **argv){
} }
} }
MSH_CMD_EXPORT_ALIAS(ledblinkm,LEDB, "BLINKS LedId Color"); MSH_CMD_EXPORT_ALIAS(ledblinkm,LEDB, "BLINKS LedId Color");
void ledbreath(int argc, char **argv){
LED_BreathTurn(atoi(argv[1]));
}
MSH_CMD_EXPORT_ALIAS(ledbreath,LEDBR, "BLINKS LedId Color");
void ledsetm(int argc, char **argv){ void ledsetm(int argc, char **argv){
int LedId_begin = atoi(argv[2]); int LedId_begin = atoi(argv[2]);