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

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值