极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 24113|回复: 3

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

[复制链接]
发表于 2014-5-16 18:07:06 | 显示全部楼层 |阅读模式



各位大神 新手上路,求指导,求赐教,
两路红外循迹代码如下
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);;
        }}}



回复

使用道具 举报

发表于 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
SL = digitalRead(SensorLeft);
// SM = digitalRead(SensorMiddle); --------------------这里打错了吧
...

那个是注释   把三路改成两路了
回复 支持 反对

使用道具 举报

发表于 2016-1-20 21:32:17 | 显示全部楼层
本帖最后由 2679462483 于 2016-1-20 22:00 编辑
aircharley 发表于 2014-5-17 01:15
SL = digitalRead(SensorLeft);
// SM = digitalRead(SensorMiddle); --------------------这里打错了吧
...


SL表示左探测器=2号插口读的数字,SR表示右探测器=6号插口读的数字,SM表示中探测器(但没有设置,所以打//当成注解了)不明的可以把//后同一行字都当成透明。
+
虽然程式没问题,但是loop中尾
        }
         else // 都是白色, 停止<--<--<--<--<--<--
        {   
注解表示当(SL==High)&&(SR==High)==true时为双探测器探测都是白色与前程式有矛盾,但因为是注解,如果只是注解错就没问题。本人不清楚High为白色还是黑色(贵程式High为线的颜色)
本人只是arduino的初学者,记得arduino好像只有1-13号插口,若是本人的无知请指導本人。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 18:50 , Processed in 0.094633 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表