Arduino智能小车寻迹

这是一个简单的智能小车寻迹

所需材料:红外传感器模块 ,两个就行。

红外传感器:有一个发射管和一个接受管。透明的为发射管,黑颜色的为接收管。红外传感器通电后,透明管会发出红外光,当红外光照射在黑色的线上面,黑色的吸光能力比较强,返回来的红外光就比较少,从而接收管接收到的红外光就比较少。它的内部电阻就会变大。通过外接电路就可以读出其检测的状态。相反,如果照射到白色的线上,被吸收的就少,电阻就会变小。然后我们根据Arduino读出返回的值,就可以判断出小车是否在黑线上行走。

这里有很多种方法,可以帮助我们判断

Ps: 如果安装好传感器的位置写简单的寻迹就成功了百分之90%。(安装过程需多次调试)

1、两个红外传感器(都在线上,左边的偏了就右转、右边的偏了就右转)//这个方法未测试成功效果不好

2、让黑线在小车的两个传感器中间,两个传感器的距离比黑线宽一点。安装效果需要多次调试。

以下是简单的寻迹代码:

//寻迹:左边7,右边8。在黑线上是1
int sensor_L;
int sensor_R;
int a=0;
void setup(){
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(7,INPUT);
  pinMode(8,INPUT);
  Serial.begin(9600);
  }
  
void loop(){
  analogWrite(3,150);
  analogWrite(11,150);
  sensor_L=digitalRead(7);
  sensor_R=digitalRead(8);
  //Serial.println(sensor_L);
  Serial.println(sensor_R);
  if(sensor_L==0&&sensor_R==0){
    //表示黑线在正中间,小车直行
    forward(); 
    }
  if(sensor_L==1&&sensor_R==0){
     //表示小车左边压线,小车应该左转   
      turnLeft();
      }
   if(sensor_L==0&&sensor_R==1){
    //表示小车右边压线,小车应该右转
     turnRight();
    }
    if(sensor_L==1&&sensor_R==1){
     //如果都在黑线上,小车应该停止
     stop1();
      }
     
  }
  
void stop1(){
  digitalWrite(5,0);
  digitalWrite(6,0);
  digitalWrite(9,0);
  digitalWrite(10,0);  
  }
void forward(){
  digitalWrite(5,1);
  digitalWrite(6,0);
  digitalWrite(9,1);
  digitalWrite(10,0);
  }
void back1(){
  digitalWrite(5,0);
  digitalWrite(6,1);
  digitalWrite(9,0);
  digitalWrite(10,1);
  }
  void turnLeft(){
  digitalWrite(5,1);
  digitalWrite(6,0);
  digitalWrite(9,0);
  digitalWrite(10,1);
}
void turnRight(){
  digitalWrite(5,0);
  digitalWrite(6,1);
  digitalWrite(9,1);
  digitalWrite(10,0);
}
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值