|
|
本人新手,做机械设计的,想趁假期做个避障小车,以后可能的话改成自动拖地机。
无奈编程出现问题,求大神赐教。(详细点)
我是用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);
}
}
现在的结果是小车不管光电开关有没有信号,小车只后退……问题出在哪里? |
|