理论教育 如何使用双路巡线传感器?

如何使用双路巡线传感器?

时间:2023-06-30 理论教育 版权反馈
【摘要】:Arduino 单片机就是以是否收到反射回来的红外光为依据,来确定黑线的位置和小车的行走路线,所以说,巡线传感器是常用来巡黑线的。图4-2-1双路巡线传感器图4-2-2双路巡线传感器安装位置图4-2-3传感器相对于黑线的位置根据前文可知,可利用 Arduino 读取双路巡线传感器的两个信号输出脚的高低电平状态,根据3.1.1 节所述的数字接口,本节将设定使用11号与12 号数字接口分别读取S1 与S2 的高低电平状态,读取函数使用digitalRead()。

如何使用双路巡线传感器?

巡线传感器采用的主要原理就是红外探测法,即红外线在不同颜色的物体表面具有不同的反射性质的特点,红外线会被黑色物体吸收,会被白色物体反射。Arduino 单片机就是以是否收到反射回来的红外光为依据,来确定黑线的位置和小车的行走路线,所以说,巡线传感器是常用来巡黑线的。红外探测器探测距离有限,一般最大不超过15 cm。

本书使用的双路巡线传感器,如图 4-2-1 所示,该传感器设置在Arduino 机器人的前下方,如图4-2-2 所示。它的特点是双路检测,即两侧同时都能检测黑白情况,如图4-2-3 所示。就单侧传感器而言,它具有红外发射头(透明部分)与红外接收头(紫黑部分),双路巡线传感器工作时,红外发射头会一直发射红外线到正方向的物体表面,同时红外接收头也会一直检测有没有反射回来的红外线,例如,图4-2-1 上侧传感器恰好检测到白色区域,此时红外接收头会检测到有反射回来的红外线,进一步输出高电平到S1 引脚;如果检测到黑色区域,此时红外接收头会检测不到反射回来的红外线,便输出低电平到S1 引脚。利用Arduino 检测S1 引脚的高低电平状态,即可让机器人知道此时遇到白色区域还是黑色区域了。根据S1 引脚、S2 引脚各自返回到Arduino 的电平状态即可知道机器人相对于黑线的位置。

图4-2-1 双路巡线传感器

图4-2-2 双路巡线传感器安装位置

图4-2-3 传感器相对于黑线的位置

根据前文可知,可利用 Arduino 读取双路巡线传感器的两个信号输出脚的高低电平状态,根据3.1.1 节所述的数字接口,本节将设定使用11号与12 号数字接口分别读取S1 与S2 的高低电平状态,读取函数使用digitalRead()。

(1)双路巡线传感器4 个引脚的定义:

S1:图示上侧传感器信号输出,按照配套的机器人,本书设置与Arduino 的11 号数字接口连接;

S2:图示下侧传感器信号输出,按照配套的机器人,本书设置与Arduino 的12 号数字接口连接;

VCC:接5 V 直流电源;

GND: 接电源地引线。(www.daowen.com)

(2)双路巡线传感器的测试代码如下:

程序编译通过后,上传程序至Arduino UNO 开发板中,待上传成功后,点击菜单栏的工具,选择串口监视器,弹出串口如图4-2-4 所示。调整双路巡线传感器相对于黑线的位置,数据将发生变化:

① 左侧传感器、右侧传感器都在黑线内时,数据为00;

② 左侧传感器在白色区域而右侧传感器在黑线内时,数据为10;

③ 左侧传感器在黑线内而右侧传感器在白色区域时,数据为01;

④ 左侧传感器、右侧传感器都在白色区域时,数据为11。

图4-2-4 串口监视器监视传感器的位置

(3)程序解读:

① 双路巡线传感器与 Arduino UNO 开发板之间的关系是 Arduino UNO 开发板要利用双路巡线传感器的检测信息,此为输入,因此要使用digitalRead()函数,而在使用 digitalRead()函数之前要先利用 pinMode()函数配置11 号、12 号接口为输入模式。

② Serial.print()里面除了可以填变量名称,也可以直接填函数名称,例如 Serial.print(digitalRead(S1)),因为 digitalRead(S1)函数返回值就是数值。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈