hustwhzl 发表于 2015-2-15 14:41:20

求助2驱避障小车程序问题

本人新手,做机械设计的,想趁假期做个避障小车,以后可能的话改成自动拖地机。
无奈编程出现问题,求大神赐教。(详细点)

我是用L298板子驱动两个直流电机,再用两个光电位移传感器避障,编写下列程序,结果小车
一直一个方向运动(光电开关感触到障碍啦,但是就是马达不反向),猜测问题可能出现在程序
最后一段吧。
int E1=5;      //电机1调速
int M1=4;   //电机1方向
int E2=6;   //电机2调速
int M2=7;   //电机2方向
int X=10;   //左前方光电开关信号线接在10号口
int Y=11;   //右前方光电开关信号线接在11号口
unsigned char A;//想用A来计数,控制转弯时马达转动的时间
void setup()
{
pinMode(M1,OUTPUT);
pinMode(M2,OUTPUT);
pinMode(X,INPUT);   //光电开关信号输入10口
pinMode(Y,INPUT);   //光电开关信号输入11口
}
void foward()
{
digitalWrite(M1,LOW);
analogWrite(E1,150);
digitalWrite(M2,HIGH);
analogWrite(E2,150);
}
void backward()
{
   digitalWrite(M1,HIGH);
analogWrite(E1,150);
digitalWrite(M2,LOW);
analogWrite(E2,150);

}
void left()
{
   digitalWrite(M1,LOW);
analogWrite(E1,200);
digitalWrite(M2,LOW);
analogWrite(E2,200);
for(A=0;A<2000;A++);

}
void right()
{
   digitalWrite(M1,HIGH);
analogWrite(E1,200);
digitalWrite(M2,HIGH);
analogWrite(E2,200);
for(A=0;A<2000;A++);

}
void loop()
{
if(X==1&&Y==1)          //两个传感器都没感触到障碍,
{
    foward();                  //小车前进
delay(50);
}
else if (X==1&&Y==0)   //只有左传感器感触到障碍
{
right();                         //小车右转
delay(100);
}
else if(X==0&&Y==1)    //只有右传感器感触到障碍

{
left();
delay(100);
}
else
{
    backward();
    delay(100);
}
}
现在的结果是小车不管光电开关有没有信号,小车只后退……问题出在哪里?

hustwhzl 发表于 2015-2-15 15:55:38

这次自己找到问题啦,是最后一段应该digitalRead(X),而不是X,不过还是谢谢论坛,每次有问题都有一大批人热心帮助。
页: [1]
查看完整版本: 求助2驱避障小车程序问题