坦克智能小车第四课:循迹小车

Byamber

坦克智能小车第四课:循迹小车

概述

在本课中将介绍用循迹模块让坦克小车循迹,当按下遥控器某个按键,小车开始循迹;按下另一个按键,小车停止。

循迹原理

循迹传感器模块上有2个探头,一个是红外发射二极管,一个是红外接收管。红外发射二极管不断向外发射红外线,若循迹模块不在黑色轨道上,红外发射管发射的红外线就会被反射回来,反射回来的红外线会被红外接收管接收到,循迹模块输出低电平;如果循迹模块在黑色轨道上,红外发射管发射的红外线不能被反射,红外接收管无法检测到红外线或检测到的红外线信号比较弱,模块输出高电平。

坦克底盘上一共有2个循迹传感器,左右各一个。若左边循迹传感器模块位于黑线上,坦克小车左转;若右边循迹传感器模块位于黑线上,坦克小车右转;若左右两个循迹模块位于黑色轨道两侧,则坦克小车直行;若左右循迹模块均在黑线上,坦克小车停止运动。如图所示

软件

下载http://www.kookye.com/download/car/tank_robot_lesson4.zip并解压文件,用arduino IDE打开tank_robot_lesson4.ino文件,下面对部分代码做简要说明。

#define LFSensor_1 A0 //line follow sensor1
#define LFSensor_2 A1 //line follow sensor2

上面两行代码定义了左右两个循迹传感器所接的端口

void read_sensor_values()
{
  sensor[0]=digitalRead(LFSensor_1);
  sensor[1]=digitalRead(LFSensor_2);
}

read_sensor_values()函数会读取左右两个循迹模块信号,并将左边模块信号存储在sensor[0]中;右边模块结果存储在sensor[1]中。

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(250);
  }
  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(250);
  }
  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 blac

在auto_tarcking()中先调用read_sensor_values()函数,获取到左右循迹模块信号,接着通过if语句判断左右循迹模块信号,控制坦克小车运动,实现循迹。

测试

step 1 用usb线把坦克下车与pc连接起来,选择正确的板子型号和端口号,将程序烧录到arduino中

step 2 打开电池盒电源,将坦克小车放到黑色轨道上

step 3 遥控器对着红外接收头,按下”OK”键,小车将沿着黑色轨道行驶;按下”0″小车停止。

注意:若无法循迹,请看考第一课调节循迹模块灵敏度,并检查接线。

About the Author

amber administrator

Comments Are Closed!!!