小车功能的丰富——定点停车+检测启动+红外循迹的实现
上一讲我们讲了“自动摇摆超声波避障”,由于没加后退,所以当距离过近时就会崩溃,由于一次只能上传一个视频,所以我上传到了优酷上,搜“超声波避障-后退功能演示”,或进这个链接看加了后退功能的效果:
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后面还有其他代码,但不是本次讲解内容,下次会跟大家说。
然后是主函数里:

在主函数前面加一些初始化函数,这里就不贴出来了,大家都会的。
给大家看一下我用到的模块对应引脚图:

好了,今天就到这里了先。
不是哦、这个是做着玩的一个小车,飞思卡尔可是比这个复杂多了呢
感觉你写了好多,很专业,一脸懵逼这个是不是一个叫飞思卡尔智能车