Car/App/Src/app_line_seek.c

48 lines
1.2 KiB
C
Raw Normal View History

2024-07-14 21:03:50 +08:00
#include "app_line_seek.h"
#include "line_seek.h"
#include "main.h"
#include "motor.h"
#include "syscalls.h"
void App_LineSeek(void)
{
int LineL1 = 1, LineL2 = 1, LineR1 = 1, LineR2 = 1;
LineSeek_Get(&LineL1, &LineL2, &LineR1, &LineR2); // 获取黑线检测状态
if ((LineL1 == LOW || LineL2 == LOW) && LineR2 == LOW) // 左大弯
{
MOTOR_SetDuty(-30, 30); // 左旋
HAL_Delay(80);
}
else if (LineL1 == LOW && (LineR1 == LOW || LineR2 == LOW)) // 右大弯
{
MOTOR_SetDuty(30, -30); // 右旋
HAL_Delay(80);
}
else if (LineL1 == LOW) // 左最外侧检测
{
MOTOR_SetDuty(-50, 50); // 左旋
HAL_Delay(10);
}
else if (LineR2 == LOW) // 右最外侧检测
{
MOTOR_SetDuty(50, -50); // 右旋
HAL_Delay(10);
}
else if (LineL2 == LOW && LineR1 == HIGH) // 中间黑线上的传感器微调车左转
{
MOTOR_SetDuty(0, 50); // 左转
}
else if (LineL2 == HIGH && LineR1 == LOW) // 中间黑线上的传感器微调车右转
{
MOTOR_SetDuty(50, 0); // 右转
}
else if (LineL2 == LOW && LineR1 == LOW) // 都是黑色, 加速前进
{
MOTOR_SetDuty(50, 50); // 直走
}
}