完成基本功能后,我们现在准备为Arduino机器人提供升级功能 - 线路跟踪!
在本教程中,您将逐步学习如何跟踪Arduino机器人。为了使本教程易于理解,此处使用Arduino机器人套件(Pirate:带蓝牙4.0的4WD Arduino移动机器人套件)作为示例。
课程菜单:
第1课:简介
第2课:构建一个基本的Arduino机器人
第3课:构建线跟踪Arduino机器人
第4课:构建一个可以避免障碍的Arduino机器人
第5课:构建具有光和声效果的Arduino机器人
第6课:构建一个可以监控环境的Arduino机器人
第7课:构建蓝牙控制的Arduino机器人
您可能需要的硬件零件:
Arduino的线跟踪(跟随)传感器×3
供应:
步骤1:
宽2.5CM黑色电工胶带×1
第2步:
1M * 1M白板×1
第3步:
M3 * 30MM尼龙支架(螺钉,螺母)×3
第4步:
装配说明
组装Arduino机器人并不困难。请按照以下说明操作。
步骤1:
首先,您需要3个尼龙支架及其随附的螺丝和螺母。
第5步:
步骤2:连接尼龙支撑
使用螺母,将尼龙支架连接到Mini传感器的顶部。安装支架时,请注意其方向:螺母和探头应朝向一个方向。
第6步:
第3步:组装传感器板
从机器人平台上卸下上板。然后,将传感器板连接到平台的前部。
第7步:
步骤4:组装线跟踪传感器
首先,将传感器与指定用于数据传输的电线连接。然后,使用M3螺钉将传感器固定到从平台前部突出的扩展板上。
第8步:
连接硬件
组装完传感器后,不要急于将平台的上板重新放上 - 在此之前,我们需要先将传感器与Romeo BLE连接起来。
左侧的图片显示传感器在传感器板上的正确ABC位置,对应于Romeo BLE上的引脚10,9和8。连接传感器时,请务必检查是否按正确顺序连接了传感器。连接传感器后,将平台的上板重新安装在底座顶部。
第9步:
调整传感器
在下载代码之前,我们需要调整传感器。首先,将USB电缆插入Romeo BLE(带蓝牙4.0的Arduino机器人控制板)以给它供电。如下图所示,下面的传感器有一个飞利浦螺丝头;这个螺钉头可用于调整传感器的距离检测。取一张白纸并将其放在传感器探头下方(纸张的颜色用于校准目的)。拿一把螺丝刀用它来拧紧飞利浦螺丝头。根据拧紧螺钉头的紧密程度,您会感觉传感器的探头在物理上上下移动。一旦开始拧紧,您还会看到传感器的LED亮起。拧紧螺丝头,直到探针点位于纸张上方约2厘米处。
第10步:
编码
插上你的USB。从GitHub下载名为“HuntingLineBlack.ino”的Arduino代码。单击Arduino IDE中的Upload按钮将代码上传到BLE控制板。
第11步:
配置Arduino Robot的路径
取出你的白板。使用2.5厘米宽的电气胶带在白板上布置路径,如下图所示。
第12步:
电线的宽度约为2.5厘米,传感器A和C之间的近似距离。我们选择了上面的路径,原因与代码有关;后面的部分将更彻底地解释这种推理。
第13步:
传输:它是如何工作的
我们如何让机器人保持在轨道上?我们需要确保机器人始终位于轨道中间。机器人使用其3个传输传感器来校准其相对于轨道的位置 - 一旦它转向侧面,机器人将自我调整回中间。
当我们的机器人移动时,会发生三种情况。
第14步:
(a)当机器人首次开始沿轨道移动时,只有中间传感器(B)检测到黑线 - 左右传感器尚未进入游戏状态。汽车将沿轨道保持居中并向前移动。
第15步:
(b)继续沿着轨道行进后,机器人可能会开始偏离中心。在这些情况下,左右传感器将尝试检测黑线并将机器人自引导回轨道。例如,如果机器人转向轨道的右侧,则车辆需要通过向左转动来重新定中心 - 左侧传感器将启动并自动转动机器人直至其重新居中。
第16步:
(c)相反,如果机器人转向轨道的左侧,则右侧传感器将启动并调整机器人的路径,直到它重新居中。
代码提要
没有必要讨论基本代码 - 让我们来看看涉及传输的部分。
int RightValue; //针8上的右侧拖拉机传感器
int MiddleValue; //针9上的中线拖拉机传感器
int LeftValue; //引脚10上的左线拖拉机传感器
//读取线跟踪传感器的3个引脚值
RightValue = digitalRead(8);
MiddleValue = digitalRead(9);
LeftValue = digitalRead(10);
使用三个变量 - RightValue,MiddleValue,LeftValue - 来记录3个传感器的读取值。
digitalRead(引脚)功能用于读取数字输入/输出端口值。如果此部分仍不清楚,请查看我们的术语手册或Arduino网站。
当中间传输传感器检测到黑线(轨道)时,它将产生低能量输出。当他们检测到白色空间时,他们将产生高能量输出。
下面的示例A说明了传输代码的工作原理。当中间传感器检测到黑线(轨道)时,它将产生低能量输出。当左/右传感器检测到空白区域时,它们将产生高输出。
if(MiddleValue == LOW){//在Robot.Speed(100,100)中间的行;延迟(10);}
否则if((LeftValue == HIGH)&&(RightValue == HIGH)){Robot.Speed(100,100);延迟(10);}
如果传感器检测到左侧的黑线/轨道,同时还检测到右侧的空白区域,则机器人将向左转。见下面的例B:
否则if((LeftValue == LOW)&&(RightValue == HIGH)){Robot.Speed(-100,100); //左转延迟(10);}
相反,如果传感器检测到右侧的黑线/轨道,同时还检测到左侧的空白区域,则机器人将向右转。见下面的例C:
else if((LeftValue == HIGH)&&(RightValue == LOW)){Robot.Speed(100,-100); //右转延迟(10);}