各位大佬,小弟毕设遇到一难题,希望大佬指教。
问题描述:超声波避障模块,四路循迹模块可单独运行;用主函数将两者一起调用则出现问题。
这是超声波避障模块的函数
void app_ultrasonic_mode(void)
{
int Len = 0;
Len = bsp_getUltrasonicDistance();
if(Len < 100)
{
Len = (u16)bsp_getUltrasonicDistance();
while(Len < 100)
{
Car_Stop();
delay_ms(300);
Len =(u16)bsp_getUltrasonicDistance();
}
}
else
{
Car_Run(2600);
}
}
这是循迹模块的函数
void app_LineWalking(void)
{
int LineL1 = 1, LineL2 = 1, LineR1 = 1, LineR2 = 1;
bsp_GetLineWalking(&LineL1, &LineL2, &LineR1, &LineR2);
if( (LineL1 == LOW || LineL2 == LOW) && LineR2 == LOW)
{
Car_SpinLeft(3500, 3500);
delay_ms(80);
}
else if ( LineL1 == LOW && (LineR1 == LOW || LineR2 == LOW))
{
Car_SpinRight(3500, 3500);
delay_ms(80);
}
else if( LineL1 == LOW )
{
Car_SpinLeft(3000, 3000);
delay_ms(10);
}
else if ( LineR2 == LOW)
{
Car_SpinRight(3000,3000);
delay_ms(10);
}
else if (LineL2 == LOW && LineR1 == HIGH)
{
Car_Left(2500);
}
else if (LineL2 == HIGH && LineR1 == LOW)
{
Car_Right(2500);
}
else if(LineL2 == LOW && LineR1 == LOW)
{
Car_Run(3000);
}
}
这是主函数
#include "stm32f10x.h"
#include "app_motor.h"
#include "app_ultrasonic.h"
#include "bsp_ultrasonic.h"
#include "app_linewalking.h"
#include "bsp_linewalking.h"
#include "bsp.h"
#include "sys.h"
int main(void)
{
int Len = 0;
bsp_init();
while(1)
{
Len = bsp_getUltrasonicDistance();
if(Len > 100)
{
app_LineWalking();
}
else
{
Car_Stop();//Í£³µ
delay_ms(80);
if(Len > 100)
break;
}
}
}
遇到的情况是小车循迹一小段,就停车,或者一直左转再停车,超声波避障一直有用。
之前尝试过在while循环里直接调用避障,寻迹,小车不转。