每日一言
别等准备好了才出发,出发了自然会找到前行的路。
案例:跟随小车
跟随小车是什么意思呢??就是小车会跟着你..........
硬件:红外避障传感器模块
左边跟随模块能返回红外,输出低电平,右边不能返回,输出高电平,说明物体在左边,需要左转
右边跟随模块能返回红外,输出低电平,左边不能返回,输出高电平,说明物体在右边,需要右转
总结:
红外传感器的前方只要有物体就会返回红外信号,那么就输出低电平,灯亮,
红外传感器的前方只要没有物体就不会返回红外信号,那么就输出高电平,灯灭
那么我们根据这个特性我们是不是就很好写代码了
我们用差速来写哈,既然学了差速,那我们就用差速控制一下速度
代码如下:
这个是main.c文件的代码
我们这边用了两个红外模块,一个是FollowLeft 和FollowRight,还是一样的我们需要用到两个定时器,因为我们利用了差速来控制小车的速度和转向,我们利用特性,当两个灯都为低电平的时候,也就是两个模块都返回来红外信号,那就说明物体在两个传感器的正前方,那我们就直接不带转向走就好了,所以这边是speedLeft=20; speedRight=20;因为我测试了40的时候是非常快的(全功率),那么我就设置20(一半速度),这样我觉得刚刚好,都是需要不断的去测试,可能不是最好,但是都是根据自己的需求进行改代码,
左转和右转我设置的是20 和 0 这两个数值,因为我感觉这个跟随小车的转向幅度大不大就无所谓了,毕竟万一我需要很快的转弯呢,那小车也可以反应过来,所以这边我设置为0,20的话也是希望慢一点,但是转向快一点,都是根据实际的现象修改的我认为合适的。
停止的话就是,两个模块的红外信号都没有返回,高电平两个灯都是灭的状态,说明前方没有物体,那么就不需要跟随,所以设置都是为左右都是数值0
最后说一点 extern 怕又忘记是什么作用了,目的是用main.c直接操作的time0.的speedLeft 和speedRight,那么我们这个main.c给speed赋值,那么这个值也是在time0.c同步使用的
Motor.c文件代码
Motor.h的代码
Time.c的代码
注意:以上代码不进行讲解,因为我之前的笔记都有讲解,因为代码都没有变动,都是加模块实现功能的,所以代码不变动,主要的变动就是在main.c
跟随小车展示视频
跟着我学习吧,你也可以!