当前位置:   article > 正文

三天让车跑起来!stm32寻迹车——第三天:如何让车跑得更好?_怎么让寻迹小车直线跑得快,弯道跑得慢

怎么让寻迹小车直线跑得快,弯道跑得慢

声明在前:本系列以程序设计为主,适用于刚学会32,想完成一个基本项目却不知道怎么上手的小伙伴。想学习硬件方面如:电路、画板等内容的朋友请不要在本系列耽误您的时间,关闭即可。

经过 第一天.与第二天.的基础内容讲解,本系列终于迎来了最后一期:避障、磁铁、停车元素的方案设计,以及——如何让车跑得更好?

避障元素:

原理

首选红外模块/光电对管。简单朴实不枯燥,又不像超声波花里胡哨。
左图为在第一期中,说到过一个平价版的红外模块;右图为光电对管(圆柱体,长得像个小号手电筒):
在这里插入图片描述
装车的时候只要让他们都朝前就能充当避障的传感器:(光电对管的距离更远一些,但速度没达到一定程度的话,没必要那么远就作出响应)
光电对管的用法和红外模块几乎是相同的:)
在这里插入图片描述
在没有障碍物的时候,红外模块返回值为“黑色”;当障碍进入检测范围时,返回值为“白”,而程序就对其返回值作出响应,这便是红外避障的原理。所以,如果用红外避障的话,障碍物不能是黑色,否则返回值永远都是“黑色”。
原理讲完,接下来我们看看程序:

方案一:if else

最直接的方法就是用if else语句:

初始化balabala
while(1){
   
	if(有障碍){
   
		避障();}
	else {
   
		Run();}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

方案二:外部中断

外部中断,就是当特定引脚发生改变的时候,触发中断。
我们可以把连避障的引脚设置为外部中断,上升沿或下降沿触发,这里就不细讲了,感兴趣的可以自己回去研究

避障程序

其实无论是用if else 还是外部中断,我们都希望把“避障”作为一个突发事件来优先处理的。避障程序该怎么写呢?
推荐一种最简单直接的方法:固定路线,最多分一下往左还是往右拐出

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/837984
推荐阅读
相关标签
  

闽ICP备14008679号