上一课学会了通过红外让小车运动,本课将在上一课的基础上增加黑白循迹功能。循迹功能就是让小车沿着白色地板上的黑色线运动,就像火车卡在轨道上移动一样。
本课只需要安装两个黑白循迹模块就可以了,所以说安装还是很简单的。黑白循迹模块用于识别黑白线,当黑白循迹模块检测到黑线时候模块信号灯熄灭输出高电平;检测到白色线,信号指示灯亮起输出低电平。模块的灵敏度可以通过可调电位器调节。
所需配件:
M3*5十字螺丝 x4颗
M3*12双通铜柱 x2根
用M3*5十字螺丝通过铜柱把两个循迹模块按照图示样子安装在底盘上(记得加图!)
循迹模块按照下表与uno连接起来
左边循迹模块 | |
循迹模块 | Arduino uno |
VCC | 5V |
GND | GND |
DO | D2 |
AO | 不接 |
右边循迹模块 | |
循迹模块 | Arduino uno |
VCC | 5V |
GND | GND |
DO | D3 |
AO | 不接 |
接好线后,在白色地板上贴一条黑色胶带,用USB把uno和PC连接起来,给uno板供电。用螺丝旋转循迹模块上的可调点位,使循迹模块在黑线上时候模块信号指示灯熄灭,在白线上时候模块指示灯亮起。
下载示例代码并解压,用arduino IDE打开lesson-3.ino,下面对部分代码作简单说明。
#define LFSensor_1 2 //line follow sensor1 #define LFSensor_2 3 //line follow sensor2
循迹模块与uno之间端口定义
char sensor[2]={0,0};
定义一个数组,将循迹模块检测到的信号存储在数组中。
#define M_SPEED1 150 //motor speed #define M_SPEED2 170 //motor speed
上面两个变量分别代表小车转弯和执行时候的电机速度,速度不要设置的过大,速度过大小车循迹时候可能会跑出轨道。
void auto_tarcking(){ read_sensor_values(); if((sensor[0]==LOW)&&(sensor[1]==HIGH)){ //The right sensor is on the black line.The left sensor is on the white line set_motorspeed(M_SPEED1,M_SPEED1); turn_right(20); } else if((sensor[0]==HIGH)&&(sensor[1]==LOW)){//The right sensor is on the white line.The left sensor is on the black line set_motorspeed(M_SPEED1,M_SPEED1); turn_left(20); } else if((sensor[0]==LOW)&&(sensor[1]==LOW)){//The left an right sensor are on the white line. set_motorspeed(M_SPEED2,M_SPEED2); go_ahead(); } else if((sensor[0]==HIGH)&&(sensor[1]==HIGH)){//The left an right sensor are on the black line. go_stop(); } }
上面的函数是循迹功能的核心代码,黑线位于左右循迹模块之间时候小车直行;左边循迹在黑线上,小车左转;右边循迹模块在黑线上,小车右转;左右循迹均在黑线上,小车停止。
用USB线将arduino 和PC连接起来,选择正确的板卡型号和端口将其烧录到arduino uno中。将小车放置在黑线上,打开电池盒电源,遥控器对着红外接收头,按下”OK”键,小车开始循迹。按下”0″小车停止。
如果小车无法按照预期工作,请检查下面事项
DownLoad Url osoyoo.com
You must be logged in to post a comment.
adf