Arduino循迹小车(三路红外)

利用红外线传感器让小车在规定路线上行进

1. 所需材料

  • 小车车架及车轮(可以用sw建模然后利用3D打印机打印,也可以在网上直接购买小车地板,用纸板最廉价O(∩_∩)O哈哈~)
    该图为3D打印效果
    3在这里插入图片描述
  • Arduino开发板及扩展板在这里插入图片描述
    在这里插入图片描述
  • 三个红外传感器
  • 两个360度舵机(我是以舵机为驱动的,也可以用电机)
  • 杜邦线若干
  • 锂电池
    组装小车及模块调试
    舵机调试利用代码使舵机前传后传停止
    参考代码如下:
#include <Servo.h>
Servo servo;  //定义舵机
void setup()
{
  servo.attach(2);//舵机串口设为2
}
void loop()
{
    servo.write( 360 );//舵机前转
    delay(1000);
    servo.write( -360 );//舵机后转
    delay(1000);
    servo.write( 90 );//舵机停止
    delay(1000);
}

**

  • 小车循迹代码

**

#include <Servo.h>
Servo servo_pin_right;  //定义右驱动
Servo servo_pin_left;  //定义左驱动
const int SensorLeft=19;//左红外
const int SensorMid=20;//中红外
const int SensorRight=21;//右红外
int SL;//左红外状态
int SM;//中红外状态
int SR;//右红外状态
void setup()
{
  Serial.begin(9600);//初始化串口
  servo_pin_right.attach(9);//右驱动串口设为9
  servo_pin_left.attach(10);//左驱动串口设为10
  pinMode(SensorLeft,INPUT);//定义左红外为输入
  pinMode(SensorMid,INPUT);//定义中红外为输入
  pinMode(SensorRight,INPUT);//定义右红外为输入  
}
//===========小车基本运动===============
void car_go()//小车直行
{
  servo_pin_left.write( 360 );//左轮前进
  servo_pin_right.write( -360);//右轮前进
}
void car_left()//小车左转
{
  servo_pin_left.write( 90);//左轮后退
  servo_pin_right.write( -360 );//右轮前进
  }
void car_right()//小车右转
{
  servo_pin_left.write( 360 );//左轮前进
  servo_pin_right.write( 90);//右轮后退
}
void car_back()//小车后退
{
  servo_pin_left.write( -360 );//左轮后退
  servo_pin_right.write(360 );//右轮后退
}
void car_stop()//小车停止
{
  servo_pin_left.write( 90 );//左轮停止
  servo_pin_right.write(90 );//右轮停止
}
void loop()
{
  while(1)
  {
    // 有信号为LOW,没信号为HIGH
    SL=digitalRead(SensorLeft);//有信号表明在白色区域,没有信号表示在黑色区域
    SM=digitalRead(SensorMid);//有信号表明在白色区域,没有信号表示在黑色区域
    SR=digitalRead(SensorRight);//有信号表明在白色区域,没有信号表示在黑色区域
    if(SL==LOW & SR==LOW & SM==HIGH)//左右红外检测到信号,中红外没有检测到信号,小车前进
      car_go();
    else if( SR==HIGH & SL==LOW & SM==HIGH)//左红外检测到信号,右中红外没有检测到信号,小车右转
      car_right();
    else if(SL==HIGH & SR==LOW & SM==HIGH)//右红外检测到信号,左中红外没有检测到信号,小车左转
      car_left();
    else if(SR==LOW & SM==LOW & SL==LOW)//左右中红外检测到信号,小车后退
      car_back();
    else
      car_stop();
  }  

在这里插入图片描述

发布了3 篇原创文章 · 获赞 25 · 访问量 9010

猜你喜欢

转载自blog.csdn.net/weixin_43285027/article/details/88614947
今日推荐