求大神指导编程
想用红外传感器和超声波传感器做一个避障小车,但在实现的时候车子总是向后走而不能向前走。求大神知道程序如何改进。附程序:
int E1=5; //定义电机接口
int M1=4;
int E2=6;
int M2=7;
int valGP1; //定义红外传感器
int valGP2;
int val1; //定义红外传感器测量距离
int val2;
int analog1=15; //定义红外传感器接口
int analog2=14;
int inputPin=2; //定义超声波传感器接口
int outputPin=3;
void setup()
{
pinMode(M1,OUTPUT);
pinMode(M2,OUTPUT);
Serial.begin(9600);
pinMode(inputPin,INPUT);
pinMode(outputPin,OUTPUT);
void advanced();
{
digitalWrite(M1,HIGH);
digitalWrite(M2,HIGH);
analogWrite(E1,100);
analogWrite(E2,100);
delay(30);
}
void back();
{
digitalWrite(M1,LOW);
digitalWrite(M2,LOW);
analogWrite(E1,100);
analogWrite(E2,100);
delay(30);}
}
void loop()
{
valGP1 =analogRead(analog1);
valGP2=analogRead(analog2);
val1=(6787/(valGP1-3))-4;
val2=(6787/(valGP2-3))-4;
Serial.println(val1);
Serial.println(val2);
delay(500);
digitalWrite(outputPin,LOW);
delayMicroseconds(2);
digitalWrite(outputPin,HIGH);
delayMicroseconds(10);
int distance=pulseIn(inputPin,LOW);
distance=distance/50;
Serial.println(distance);
delay(500);
if(inputPin<15)
{void back();}
}
既然設定了是 2,又指定少於 15 就向後走,"车子总是向后走" 就是必然的結果了!
//
int inputPin=2; //定义超声波传感器接口
...
if(inputPin<15)
{void back();}
//
eddiewwm 发表于 2014-4-22 21:53 static/image/common/back.gif
既然設定了是 2,又指定少於 15 就向後走,"车子总是向后走" 就是必然的結果了!
//
int inputPin=2; //定 ...
改成if(distance<15)
{void back();}
这样行吗? 佑掱.。 发表于 2014-4-24 09:50 static/image/common/back.gif
改成if(distance
還不行,但已走近一步了!以下是建議應要注意的地方:
1) 要確定所使用的模擬接口(analog2=14,analog1=15)存在於所用的Arduino 板
2) 在 setup()內不應有函數定義 void advanced();void back(); ,而且也不應有";"
3) val1=(6787/(valGP1-3))-4; 及 val2=(6787/(valGP2-3))-4; 很特別,應確定其合理性
4) 最後的
if(distance<15){
back();
}
else{
advanced();
}
页:
[1]