小R科技-WIFI机器人网·机器人创意工作室
标题:
【一代经典驱动板】全功能程序之巡线遁迹模式代码解析
[打印本页]
作者:
liuviking
时间:
2014-10-28 19:57
标题:
【一代经典驱动板】全功能程序之巡线遁迹模式代码解析
一、功能原理:
在车头安装2个垂直向下的红外避障模块,作为探测黑线的传感器,当传感器返回的电平为0时,表明是正常地面,当返回的电平是1时,表明是黑线,从而根据两个探测器的状态,判断当前车体的车头状态相对于黑线是何种位置,再进行方向纠正,每一轮死循环都会纠正一次,直到满足车头与黑线平行且探测器未被触发为止。
(, 下载次数: 90)
上传
点击文件名下载附件
二、硬件连接
在车头安装2个垂直向下的红外避障模块,模块发射头距离地面约2cm,调整红外避障模块的灵敏度,使之正好在对着黑线的时候,传感器尾部的指示灯熄灭,对着正常地面时亮起。
(, 下载次数: 79)
上传
点击文件名下载附件
(小车车尾朝向用户)我们把机器人左侧的红外传感器接到驱动板的P20接口,右侧的接到P23接口。
三、软件编写
用keil C V4打开下位机程序工程,找到config.h配置文件,在配置文件中添加巡线传感器的IO管脚配置:
/* 避障管脚配置 */
sbit Input_Detect_LEFT=P2^0; //右侧探头
sbit Input_Detect_RIGHT=P2^3; //左侧探头
复制代码
然后打开motor.c文件,在文件中加入巡线的代码,首先是定义一个变量,用来保存机器人的运动状态,以便在偏离航线后,没有回到正确方向之前,机器人始终做方向修正动作。
uchar Robots_Run_Status;
复制代码
然后加入一个巡线逻辑函数,实现巡线的逻辑:
//巡线模式
void FollowLine(void)
{
switch(Robots_Run_Status)
{
case 0x01:MOTOR_GO_RIGHT; break;
case 0x02:MOTOR_GO_LEFT; break;
case 0x03:MOTOR_GO_FORWARD; break;
case 0x04:MOTOR_GO_STOP; break;
}
if((Input_Detect_LEFT == 0)&& (Input_Detect_RIGHT == 0))//两边探测器都返回低电平,表明左右两侧的红外传感器均探测到了地面,机器人直行。
{
Robots_Run_Status=0x03;//直行
}
if((Input_Detect_LEFT == 1)&& (Input_Detect_RIGHT == 0))//左侧传感器返回了高电平,表明左侧传感器探测到了黑色线,相对于黑线,机器人整体方向偏右了,需要向左侧修正。
{
Robots_Run_Status=0x02;//左转
}
if((Input_Detect_LEFT == 0)&& (Input_Detect_RIGHT == 1))//右侧传感器返回了高电平,表明右侧传感器探测到了黑色线,相对于黑线,机器人整体方向偏左了,需要向右侧修正。
{
Robots_Run_Status=0x01;//右转
}
if((Input_Detect_LEFT == 1)&& (Input_Detect_RIGHT == 1))//左右都同时检测到黑线,说明有一条横着的黑线,机器人到巡线的终点,停止运行。
{
Robots_Run_Status=0x04;//停止
}
}
复制代码
调用写好的巡线函数:
在主函数main.c中,找到while(1)死循环,加入刚刚编写的巡线函数
while(1)
{
FollowLine();//执行巡线
}
复制代码
这个是比较初级的巡线方式,满足一般条件的黑线没有问题,如果需要保险点,可以多加几个红外避障模块,这样进行多重判断会更精确。
作者:
狱锁狂龙
时间:
2014-10-29 08:12
学习了,老大,给力………………
作者:
flybyzhoujixin
时间:
2014-10-29 11:27
还有一个交叉线的判断
作者:
hlmdd
时间:
2014-12-16 21:55
刚买了开发板,学习中
作者:
superlee
时间:
2015-1-14 13:13
一直在等着准备买,但是卖的人不在线,好伤心
作者:
nsp
时间:
2015-2-9 08:55
学习了,老大,给力………………
作者:
nsp
时间:
2015-4-16 13:14
学习代码 啊啊
作者:
熊志成同学
时间:
2015-4-22 20:05
写的很不错,很好~
作者:
商周
时间:
2015-4-24 08:12
谢谢楼主,这个资料很,不过你的图形化编辑软件做好了没,能给开开眼吗?
作者:
Nass
时间:
2015-8-10 13:10
这是。arduino 吗?
作者:
suyijiang
时间:
2015-9-18 19:21
老大,添加后怎么编译不成功啦
作者:
卧虎藏龙
时间:
2016-3-14 19:53
逐步入门 感谢分享
作者:
qyr001
时间:
2020-9-23 16:51
学习了,
欢迎光临 小R科技-WIFI机器人网·机器人创意工作室 (http://www.wifi-robots.com/)
Powered by Discuz! X3.4