大_叔 发表于 2014-5-16 18:07:06

Arduino 两路红外循迹小车程序 小车不动 程序应该怎么修改




各位大神 新手上路,求指导,求赐教,
两路红外循迹代码如下
int MotorRight1=14;
int MotorRight2=15;
int MotorLeft1=16;
int MotorLeft2=17;
const int SensorLeft = 2;      //左感测器输入脚

const int SensorRight = 6;   //右感测器输入脚
int SL;    //左感测器状态

int SR;    //右感测器状态

void setup()
{
Serial.begin(9600);
pinMode(MotorRight1, OUTPUT);// 脚位 14 (PWM)
pinMode(MotorRight2, OUTPUT);// 脚位 15 (PWM)
pinMode(MotorLeft1,OUTPUT);// 脚位 16 (PWM)
pinMode(MotorLeft2,OUTPUT);// 脚位 17 (PWM)
pinMode(SensorLeft, INPUT); //定义左感测器

pinMode(SensorRight, INPUT); //定义右感测器
}

void loop()
{
SL = digitalRead(SensorLeft);
// SM = digitalRead(SensorMiddle);
SR = digitalRead(SensorRight);
       if (SL == LOW&&SR==LOW)//
   {
             digitalWrite(MotorRight1,HIGH);
             digitalWrite(MotorRight2,LOW);
             analogWrite(MotorRight1,30);
             analogWrite(MotorRight2,0);
             digitalWrite(MotorLeft1,HIGH);
             digitalWrite(MotorLeft2,LOW);
             analogWrite(MotorLeft1,30);
             analogWrite(MotorLeft2,0);

         }      
      
       else //
      {
         if (SL == HIGH & SR == LOW)// 左黑右白, 快速左转
      {
            delay(1);
            digitalWrite(MotorRight1,HIGH);
            digitalWrite(MotorRight2,LOW);
            analogWrite(MotorRight1,30);
            analogWrite(MotorRight2,0);
            digitalWrite(MotorLeft1,LOW);
            digitalWrite(MotorLeft2,LOW);
      }
         else if (SR == HIGH & SL == LOW) // 左白右黑, 快速右转
      {
          delay(1);
          digitalWrite(MotorRight1,LOW);
         digitalWrite(MotorRight2,LOW);
         digitalWrite(MotorLeft1,HIGH);
         digitalWrite(MotorLeft2,LOW);
         analogWrite(MotorLeft1,30);
         analogWrite(MotorLeft2,0);
      }
         else // 都是白色, 停止
      {   
      digitalWrite(MotorRight1,LOW);
      digitalWrite(MotorRight2,LOW);
      digitalWrite(MotorLeft1,LOW);
      digitalWrite(MotorLeft2,LOW);;
      }}}



aircharley 发表于 2014-5-17 01:15:23

SL = digitalRead(SensorLeft);
// SM = digitalRead(SensorMiddle); --------------------这里打错了吧
SR = digitalRead(SensorRight);


大_叔 发表于 2014-5-19 18:32:01

aircharley 发表于 2014-5-17 01:15 static/image/common/back.gif
SL = digitalRead(SensorLeft);
// SM = digitalRead(SensorMiddle); --------------------这里打错了吧
...

那个是注释   把三路改成两路了

2679462483 发表于 2016-1-20 21:32:17

本帖最后由 2679462483 于 2016-1-20 22:00 编辑

aircharley 发表于 2014-5-17 01:15 static/image/common/back.gif
SL = digitalRead(SensorLeft);
// SM = digitalRead(SensorMiddle); --------------------这里打错了吧
...

SL表示左探测器=2号插口读的数字,SR表示右探测器=6号插口读的数字,SM表示中探测器(但没有设置,所以打//当成注解了)不明的可以把//后同一行字都当成透明。
+
虽然程式没问题,但是loop中尾
      }
         else // 都是白色, 停止<--<--<--<--<--<--
      {   
注解表示当(SL==High)&&(SR==High)==true时为双探测器探测都是白色与前程式有矛盾,但因为是注解,如果只是注解错就没问题。本人不清楚High为白色还是黑色(贵程式High为线的颜色)
本人只是arduino的初学者,记得arduino好像只有1-13号插口,若是本人的无知请指導本人。
页: [1]
查看完整版本: Arduino 两路红外循迹小车程序 小车不动 程序应该怎么修改