下面一段c语言代码驱动小车实现三路循迹,停车5秒,壁障,寻光,但是下载到单片机中,驱动小车存在问题。

下面一段c语言代码驱动小车实现三路循迹,停车5秒,壁障,寻光,但是下载到单片机中,驱动小车存在问题。,第1张

三个问题:

1 你的flag没有初始化。

2 while(flag!=1){}中的代码有些问题。有几处应加上{ },给你改了一下:

while(flag!=1)

{

if(a5==0)

qianjin();

else

{ if(a4==0)

zuozhuan();

else

{ if(a6==0)

youzhuan();

else

flag=1;

}

}

}

3 为什么不在最外层设置大循环?

我也是初次做小车

上面的是我做玩后的一些见解

你这个可以这样

你的小车每到一个分岔口(“T”或者“十”型路口)就随机选择一个寻迹方向(路线),并且把第一个寻迹值保存起来(就是记住这次小车是往哪里走的,防止下次走重复的路)。

小车走下去会有2种情况:

1,小车此次走的路线正确 继续前走,值到下一个路口

2,小车走了一段路后没路了,又分为2种情况:

(1),小车走错路了,得退回去,这时候小车可以后退寻迹,直到返回分岔口,再重复上面过程(注意,此时小车选择路线时要和前面保存起来的值进行对比,不可以再走小车前面走过的错路了,并且还得把这次跑的方向保存,下面小车如果在这个点在此返回了,小车选择路线时就要排除上面2次的路线了,以此类推)

(2),小车到终点了,我看了你们的跑道情况,终点前面有2个断点,可以利用这个区分小车是到了终点还是跑错路了

程序可能有点复杂,祝你们成功

part1: 用一路led照亮地面,左中右三路红外传感看反光。根据反光3'bxxx写个mealy状态机。

9种状态3‘zzz,3'b000~3'b111 根据后8种状态的64种变化,输出前进还是后退,速度,方向等。

3‘b111 -> 3'b111: 在线上, DIR=2'b00; RUN=4, 快进;

3'b111 -> 3'b011: 小弯左偏, DIR=2'b10; RUN=2, 慢进;

3'b111 -> 3'b110:

3'b111 -> 3''b001: 大弯左偏, DIR=2'b10; RUN=1, 低速;

3'b111 -> 3'b000: >90度的急弯, 跑丢了: RUN=1, DIR=2'b11, REV=1倒回去找回路线。

3'b000 - > 3'b001:

3'b001 ->

default:

Part2:

根据REV确定步进电机的正转还是反转,根据DIR产生脉冲序列,根据RUN产生脉冲频率。

主要还是状态解析能力,参考<异步时序电路设计>之mealy,输出跟当前态和历史态都相关。

>

以上就是关于下面一段c语言代码驱动小车实现三路循迹,停车5秒,壁障,寻光,但是下载到单片机中,驱动小车存在问题。全部的内容,包括:下面一段c语言代码驱动小车实现三路循迹,停车5秒,壁障,寻光,但是下载到单片机中,驱动小车存在问题。、寻迹小车后退过程中继续循迹、用Verilog控制智能循迹小车的代码怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10106516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存