三天让车跑起来!stm32寻迹车——第三天:如何让车跑得更好?

本文介绍了基于stm32的寻迹车避障方案,包括红外模块和光电对管的原理及if else、外部中断的编程方法。讨论了拐出不及时和回归角过大的问题,提出通过调整角度和速度解决。同时讲解了磁铁检测的独立电路和干簧管模块方案,以及停车线的红外检测策略。强调调车、弯道、直线加速的重要性,提出保持上一个状态应对出赛道情况,以及增加电感提高赛道判断力。
摘要由CSDN通过智能技术生成

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

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

避障元素:

原理

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

方案一:if else

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

初始化balabala
while(1){
   
	if(有障碍){
   
		避障();}
	else {
   
		Run();}
}

方案二:外部中断

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

避障程序

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

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值