赞
踩
声明在前:本系列以程序设计为主,适用于刚学会32,想完成一个基本项目却不知道怎么上手的小伙伴。想学习硬件方面如:电路、画板等内容的朋友请不要在本系列耽误您的时间,关闭即可。
经过 第一天.与第二天.的基础内容讲解,本系列终于迎来了最后一期:避障、磁铁、停车元素的方案设计,以及——如何让车跑得更好?
首选红外模块/光电对管。简单朴实不枯燥,又不像超声波花里胡哨。
左图为在第一期中,说到过一个平价版的红外模块;右图为光电对管(圆柱体,长得像个小号手电筒):
装车的时候只要让他们都朝前就能充当避障的传感器:(光电对管的距离更远一些,但速度没达到一定程度的话,没必要那么远就作出响应)
光电对管的用法和红外模块几乎是相同的:)
在没有障碍物的时候,红外模块返回值为“黑色”;当障碍进入检测范围时,返回值为“白”,而程序就对其返回值作出响应,这便是红外避障的原理。所以,如果用红外避障的话,障碍物不能是黑色,否则返回值永远都是“黑色”。
原理讲完,接下来我们看看程序:
最直接的方法就是用if else语句:
初始化balabala
while(1){
if(有障碍){
避障();}
else {
Run();}
}
外部中断,就是当特定引脚发生改变的时候,触发中断。
我们可以把连避障的引脚设置为外部中断,上升沿或下降沿触发,这里就不细讲了,感兴趣的可以自己回去研究
其实无论是用if else 还是外部中断,我们都希望把“避障”作为一个突发事件来优先处理的。避障程序该怎么写呢?
推荐一种最简单直接的方法:固定路线,最多分一下往左还是往右拐出
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。