各位大佬,小弟畢設遇到一難題,希望大佬指教。
問題描述:超聲波避障模塊,四路循跡模塊可單獨運行;用主函式將兩者一起呼叫則出現問題。
這是超聲波避障模塊的函式
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();//í£3μ
delay_ms(80);
if(Len > 100)
break;
}
}
}
遇到的情況是小車循跡一小段,就停車,或者一直左轉再停車,超聲波避障一直有用。
之前嘗試過在while回圈里直接呼叫避障,尋跡,小車不轉。


uj5u.com熱心網友回復:
我感覺沒有什么問題。。。。uj5u.com熱心網友回復:
問題確實存在,老哥。我找了老師,同學幫忙看,都說沒問題
uj5u.com熱心網友回復:
能留個聯系方式交流一下嗎?轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/37461.html
標籤:單片機/工控
上一篇:keli4編譯程式總是出現LCD1602.H(163): error C202: 'P1_5': undefined identifier
下一篇:虛擬機如何與單片機串口通信
