小车功能的丰富——定点停车+检测启动+红外循迹的实现

上一讲我们讲了“自动摇摆超声波避障”,由于没加后退,所以当距离过近时就会崩溃,由于一次只能上传一个视频,所以我上传到了优酷上,搜“超声波避障-后退功能演示”,或进这个链接看加了后退功能的效果:
http://player.youku.com/player.php/sid/XMjk0NTYxNjEyNA==/v.swf

小车功能的丰富——定点停车+检测启动+红外循迹的实现

这个大家可以自己摸索,包括后退多少时间合适。今天,我们在前面基础上加上红外循迹、定点停车以及检测启动功能的实现。为了避免干扰,我们这里暂时将超声波避障功能注释掉。将超声波加上这部分,在后来会讲。第一来看一下效果视频:(拍的时候像素高,有七十多兆,提议WiFi下播放)

00:00

  • 红外循迹采用的是st188模块,一共三个。

小车功能的丰富——定点停车+检测启动+红外循迹的实现

底部安装三个红外对管,微控制器实时采集红外对管的数值,当红外对管对着黑线时,返回的数据是0,相反为1。所以能实现循迹的前提是,跑道上要贴上黑色电工胶布。

1)如果三个都是黑色、或者两边是黑色,则机器人保持直行

2)如果左边或者左边和中间都是黑色,则机器人向左转弯

3)如果右边或者右边和中间都是黑色,则机器人向右转弯

如果三个全是白色,机器人丢线,保持原来的方向行走

来看代码:

小车功能的丰富——定点停车+检测启动+红外循迹的实现

头文件里

小车功能的丰富——定点停车+检测启动+红外循迹的实现

c文件的部分代码,其余类似

TIM_CCxCmd可以单独开关定时器的某一个通道,这样的话两个轮子就能用同一个定时器,但又能分开控制轮子的状态了。但有一点要注意,这里只是个开关作用,对定时器的设置是对所有通道一样的,所以说你不能控制一个定时器的不同通道产生不同PWM波。

关于speed的参数,大家可以多次试验后选定,不同尺寸的小车会有所不同。

加入停车检测标志是为了定点停车和检测启动而设置的。

  • 定点停车和检测启动使用的是RFID标签,大致思路是:当检测到RFID_A时,停车;当检测到RFID_B时,启动。

小车功能的丰富——定点停车+检测启动+红外循迹的实现

读取RFID的模块

先来看一眼代码是怎样写的:

小车功能的丰富——定点停车+检测启动+红外循迹的实现

这是串口读取RFID值,RFIDdownAddress记录了RFID的6、7、8、9位的值,并合并到一起。当读到RFID时,返回1;否则返回0。RFIDupAddress也一样设置。 这里的0和1是后面需要的,来看:

小车功能的丰富——定点停车+检测启动+红外循迹的实现

小车功能的丰富——定点停车+检测启动+红外循迹的实现

实则switch后面还有其他代码,但不是本次讲解内容,下次会跟大家说。

然后是主函数里:

小车功能的丰富——定点停车+检测启动+红外循迹的实现

在主函数前面加一些初始化函数,这里就不贴出来了,大家都会的。

给大家看一下我用到的模块对应引脚图:

小车功能的丰富——定点停车+检测启动+红外循迹的实现

好了,今天就到这里了先。

© 版权声明

相关文章

2 条评论

  • 别人家的那些事
    别人家的那些事 投稿者

    不是哦、这个是做着玩的一个小车,飞思卡尔可是比这个复杂多了呢

    回复
  • 脑洞黑洞6666米
    脑洞黑洞6666米 投稿者

    感觉你写了好多,很专业,一脸懵逼这个是不是一个叫飞思卡尔智能车

    回复