基于stm32f10c8t6的寻迹避障小车,后续会考虑添加mfrc522

爪哇咖啡机• •️ 2019-04-29 09:55:55
各位大佬,小弟毕设遇到一难题,希望大佬指教。 问题描述:超声波避障模块,四路循迹模块可单独运行;用主函数将两者一起调用则出现问题。 这是超声波避障模块的函数 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循环里直接调用避障,寻迹,小车不转。
...全文
177 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
U1tRa 2020-04-28
  • 打赏
  • 举报
回复
能留个联系方式交流一下吗?
  • 打赏
  • 举报
回复
引用 1 楼 qq_40404475的回复:
我感觉没有什么问题。。。。
问题确实存在,老哥。我找了老师,同学帮忙看,都说没问题
qq_40404475 2019-05-19
  • 打赏
  • 举报
回复
我感觉没有什么问题。。。。

27,377

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧