本帖最后由 轻吟浅唱 于 2015-7-14 14:20 编辑
因为最近一直在折腾小车,然后就有拉开发小车沿墙跑的想法,这是我两路红外实现的沿墙跑,后面会有超声波实 现同样的功能。
实现功能
小车可沿墙保持一定距离自动前进,利用墙面反光通过红外模块接收,以此来判断小车与墙之间的距离,根据各个模块的状态组合调整电机,实现左[pre lang="arduino" line="1"
int pinI1=8;//定义I1接口
int pinI2=9;//定义I2接口
int speedpin=11;//定义EA(PWM调速)接口
int pinI3=6;//定义I3接口
int pinI4=7;//定义I4接口
int speedpin1=10;//定义EB(PWM调速)接口
int IRR=3;//定义右侧寻线传感器接口
//int IRM=4;//定义中间寻线传感器接口
int IRL=5;//定义左侧寻线传感器接口
void setup()
{
  pinMode(pinI1,OUTPUT);
  pinMode(pinI2,OUTPUT);
  pinMode(speedpin,OUTPUT);
  pinMode(pinI3,OUTPUT);
  pinMode(pinI4,OUTPUT);
  pinMode(speedpin1,OUTPUT);
  pinMode(IRR,INPUT);
 // pinMode(IRM,INPUT);
  pinMode(IRL,INPUT);
}
void advance()//前进
{
     analogWrite(speedpin,120);//输入模拟值进行设定速度
     analogWrite(speedpin1,120);
     digitalWrite(pinI4,LOW);//使直流电机(右)逆时针转
     digitalWrite(pinI3,HIGH);
     digitalWrite(pinI1,LOW);//使直流电机(左)顺时针转
     digitalWrite(pinI2,HIGH);
}
void left()//右转
{
     analogWrite(speedpin,120);//输入模拟值进行设定速度
     analogWrite(speedpin1,120);
     digitalWrite(pinI4,LOW);//使直流电机(右)顺时针转
     digitalWrite(pinI3,HIGH);
     digitalWrite(pinI1,LOW);//使直流电机(左)顺时针转
     digitalWrite(pinI2,LOW);
}
void right()//左转
{
     analogWrite(speedpin,120);//输入模拟值进行设定速度
     analogWrite(speedpin1,120);
     digitalWrite(pinI4,LOW);//使直流电机(右)逆时针转
     digitalWrite(pinI3,LOW);
     digitalWrite(pinI1,LOW);//使直流电机(左)逆时针转
     digitalWrite(pinI2,HIGH);
}
void stop()//停止
{
     digitalWrite(pinI4,HIGH);//使直流电机(右)制动
     digitalWrite(pinI3,HIGH);
     digitalWrite(pinI1,HIGH);//使直流电机(左)制动
     digitalWrite(pinI2,HIGH);
}
void loop()
{
    int r,l;
    r=digitalRead(IRR);
    l=digitalRead(IRL);
    if(r==HIGH &&l==HIGH)
    right();
    else if(r==HIGH &&l==LOW)
    advance(); 
[/code]转、右转、前进 |