feat: add serial port commands for testing and controlling the RGB LED
This commit is contained in:
57
App/main.c
57
App/main.c
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user