第11课 循线智能车#

(1)项目介绍:#

前面我们详细的介绍了画地为牢智能车的实现方法。在这里我们可以结合前面课程中知识制作一个循迹智能车。实验中,我们还是通过循迹传感器检测智能车底部是否存在黑线,然后根据检测结果控制两个电机的转动,从而控制智能车沿着黑线行走。

(2)流程图:#

循迹智能车具体逻辑如下表格。

检测

中循迹传感器

中循迹传感器

检测到黑线:高电平

检测到黑线:高电平

检测

中循迹传感器

中循迹传感器

检测到白线:低电平

检测到白线:低电平

检测

左循迹传感器

左循迹传感器

检测到黑线:高电平

检测到黑线:高电平

检测

左循迹传感器

左循迹传感器

检测到白线:低电平

检测到白线:低电平

检测

右循迹传感器

右循迹传感器

检测到黑线:高电平

检测到黑线:高电平

检测

右循迹传感器

右循迹传感器

检测到白线:低电平

检测到白线:低电平

条件

条件

条件

条件

状态

中循迹传感器检测到黑线

中循迹传感器检测到黑线

左循迹传感器检测到黑线并且 右循迹传感器检测到白线

左循迹传感器检测到黑线并且 右循迹传感器检测到白线

左旋转(PWM设为200)

中循迹传感器检测到黑线

中循迹传感器检测到黑线

左循迹传感器检测到白线并且 右循迹传感器检测到黑线

左循迹传感器检测到白线并且 右循迹传感器检测到黑线

右旋转(PWM设为200)

中循迹传感器检测到黑线

中循迹传感器检测到黑线

左循迹传感器检测到白线并且 右循迹传感器检测到白线

左循迹传感器检测到白线并且 右循迹传感器检测到白线

前进

中循迹传感器检测到黑线

中循迹传感器检测到黑线

左循迹传感器检测到黑线并且右循迹传感器检测到黑线

左循迹传感器检测到黑线并且右循迹传感器检测到黑线

前进

中循迹传感器检测到白线

中循迹传感器检测到白线

左循迹传感器检测到黑线并且 右循迹传感器检测到白线

左循迹传感器检测到黑线并且 右循迹传感器检测到白线

左旋转(PWM设为200)

中循迹传感器检测到白线

中循迹传感器检测到白线

左循迹传感器检测到白线并且 右循迹传感器检测到黑线

左循迹传感器检测到白线并且 右循迹传感器检测到黑线

右旋转(PWM设为200)

中循迹传感器检测到白线

中循迹传感器检测到白线

左循迹传感器检测到白线并且 右循迹传感器检测到白线

左循迹传感器检测到白线并且 右循迹传感器检测到白线

停止

中循迹传感器检测到白线

中循迹传感器检测到白线

左循迹传感器检测到黑线并且右循迹传感器检测到黑线

左循迹传感器检测到黑线并且右循迹传感器检测到黑线

停止

按照前面思路设计好智能车后,我们就需要按照设计思路开始制作智能车。我们需要设计对应的接线,测试代码,然后接线上传代码,运行,确保智能车能够实现理想中的功能。

(3)接线图:#

巡线模块+电机

接线注意:用导线把循迹模块连接到电机驱动扩展板上P1接口的G、V、D11、D7、D8;(M1、M2)和(M3、M4)两对时电机分别对应的连接到电机驱动扩展板上的接口B和接口A,电源接到BAT接口。

(4)测试代码:#

在事件栏拖出Arduino启动

在变量类型栏拖出设置变量模块,分别设置L_val、M_val、R_val三个变量

在控制栏拖出重复执行模块

设置三个变量L_val、M_val、R_val分别赋值11、7、8脚读取的值

在控制栏拖出如果…否则模块,并判断M_val是否等于1

在控制栏拖出如果…否则模块,并判断L_val是否等于1且R_val是否等于0,满足条件则执行左转代码

在控制栏拖出如果…否则模块,并判断L_val是否等于0且R_val是否等于1,满足条件则执行右转代码,不满足条件执行前进代码

在控制栏拖出如果…否则模块,并判断L_val是否等于1且R_val是否等于0,满足条件则执行左转代码

在控制栏拖出如果…否则模块,并判断L_val是否等于0且R_val是否等于1,满足条件则执行右转代码,不满足条件执行停止代码

完整代码:

(5)测试结果:#

将驱动扩展板堆叠在UNO Plus板上,上传好代码,按照接线图接线,将拨码开关拨至ON端后,智能车能够沿着黑线行走。