feat: add serial port commands for testing and controlling the RGB LED

This commit is contained in:
2026-07-06 11:49:22 +08:00
parent 950eca5251
commit f1777e0459

View File

@@ -17,6 +17,8 @@ bit last_hw_r = 1;
bit last_hw_g = 1; bit last_hw_g = 1;
bit last_hw_b = 1; bit last_hw_b = 1;
bit rgb_test_mode = 0;
// 实际 WS2812 物理控制引脚(接 P0.0 // 实际 WS2812 物理控制引脚(接 P0.0
sbit WS2812_DI = P0^0; sbit WS2812_DI = P0^0;
@@ -745,7 +747,11 @@ void Timer1_Isr(void) interrupt 3
} }
// 3. 警报警示声光发生器逻辑 // 3. 警报警示声光发生器逻辑
if (current_state == STATE_SOS_EMITTED) if (rgb_test_mode)
{
// RGB 测试模式下不更新虚拟 LED 状态,交由主循环串口命令控制
}
else if (current_state == STATE_SOS_EMITTED)
{ {
// SOS 特殊告警LED 红色极速闪烁 (5Hz),马达持续进行 1200ms 循环长振 // SOS 特殊告警LED 红色极速闪烁 (5Hz),马达持续进行 1200ms 循环长振
u8 sos_flash = (ms_tick / 100) % 2; // 5Hz -> 100ms 翻转一次 u8 sos_flash = (ms_tick / 100) % 2; // 5Hz -> 100ms 翻转一次
@@ -1088,6 +1094,54 @@ void main(void)
state_changed = 1; state_changed = 1;
Uart_SendString("[UART SIM] Set State to: DISARMED (Disarmed)\r\n"); Uart_SendString("[UART SIM] Set State to: DISARMED (Disarmed)\r\n");
} }
else if (cmd == '4')
{
rgb_test_mode = 1;
LED_R = 0; LED_G = 1; LED_B = 1; // 红色亮 (0代表亮)
Uart_SendString("[UART SIM] RGB Test -> RED\r\n");
}
else if (cmd == '5')
{
rgb_test_mode = 1;
LED_R = 1; LED_G = 0; LED_B = 1; // 绿色亮
Uart_SendString("[UART SIM] RGB Test -> GREEN\r\n");
}
else if (cmd == '6')
{
rgb_test_mode = 1;
LED_R = 1; LED_G = 1; LED_B = 0; // 蓝色亮
Uart_SendString("[UART SIM] RGB Test -> BLUE\r\n");
}
else if (cmd == '7')
{
rgb_test_mode = 1;
LED_R = 0; LED_G = 0; LED_B = 1; // 黄色亮 (红+绿)
Uart_SendString("[UART SIM] RGB Test -> YELLOW\r\n");
}
else if (cmd == '8')
{
rgb_test_mode = 1;
LED_R = 0; LED_G = 1; LED_B = 0; // 紫色亮 (红+蓝)
Uart_SendString("[UART SIM] RGB Test -> PURPLE\r\n");
}
else if (cmd == '9')
{
rgb_test_mode = 1;
LED_R = 1; LED_G = 0; LED_B = 0; // 青色亮 (绿+蓝)
Uart_SendString("[UART SIM] RGB Test -> CYAN\r\n");
}
else if (cmd == '0')
{
rgb_test_mode = 1;
LED_R = 0; LED_G = 0; LED_B = 0; // 白色亮 (红+绿+蓝)
Uart_SendString("[UART SIM] RGB Test -> WHITE\r\n");
}
else if (cmd == 'f' || cmd == 'F')
{
rgb_test_mode = 0;
LED_R = 1; LED_G = 1; LED_B = 1; // 熄灭
Uart_SendString("[UART SIM] RGB Test -> OFF (Normal Mode)\r\n");
}
} }
// 1. 读取按键事件并自动清空 // 1. 读取按键事件并自动清空
@@ -1096,6 +1150,7 @@ void main(void)
if (ev != KEY_EVENT_NONE) if (ev != KEY_EVENT_NONE)
{ {
rgb_test_mode = 0; // 任何物理/按键事件触发时退出 RGB 测试模式
// 通过串口打印获取到的按键事件代号进行测试联调 // 通过串口打印获取到的按键事件代号进行测试联调
Uart_SendString("Key Event Captured: "); Uart_SendString("Key Event Captured: ");
Uart_SendHex8((u8)ev); Uart_SendHex8((u8)ev);