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);;
}}}
SL = digitalRead(SensorLeft);
// SM = digitalRead(SensorMiddle); --------------------这里打错了吧
SR = digitalRead(SensorRight);
aircharley 发表于 2014-5-17 01:15 static/image/common/back.gif
SL = digitalRead(SensorLeft);
// SM = digitalRead(SensorMiddle); --------------------这里打错了吧
...
那个是注释 把三路改成两路了 本帖最后由 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]