谁能帮我看下这个两个超声波传感器计算偏转角度的函数哪里错了,应该怎么改?
本帖最后由 唐唐llll 于 2015-5-9 19:02 编辑const int Ltrigpin=5;
const int Lechopin=4;
const int Rtrigpin=3;
const int Rechopin=2;
float Between=4.50;
float Distance,Ldistance,Rdistance,Angle;
void setup()
{
Serial.begin(9600);
pinMode(Ltrigpin,OUTPUT);
pinMode(Rtrigpin,OUTPUT);
pinMode(Lechopin,INPUT);
pinMode(Rechopin,INPUT);//定义端口输入输出
}
float distance(float a,float b,float c)
{
float d;
d=sqrt((a*a/2)+(c*c/2)-(b*b/4));
return d;
}//长度函数
float angle(float b,float c,float d)
{
float angle;
angle=90-acos((c*c)+(d*d)-(b*b/4)/b*d);
return angle;
}//角度函数
void loop()
{
digitalWrite(Ltrigpin,LOW);
delayMicroseconds(2);
digitalWrite(Ltrigpin,HIGH);
delayMicroseconds(10);
digitalWrite(Ltrigpin,LOW);
Ldistance=pulseIn(Lechopin,HIGH)/58.00;//左传感器距离
delayMicroseconds(1500);
digitalWrite(Rtrigpin,LOW);
delayMicroseconds(2);
digitalWrite(Rtrigpin,HIGH);
delayMicroseconds(10);
digitalWrite(Rtrigpin,LOW);
Rdistance=pulseIn(Rechopin,HIGH)/58.00;//右传感器距离
Distance=distance(Rdistance,Between,Ldistance);
Angle=angle(between,Ldistance,Distance);
Serial.print(Ldistance);
Serial.println();
Serial.print(Rdistance);
Serial.print();
Serial.print(Distance);
Serial.print();
Serial.print(Angle);
Serial.println();
Serial.println();
delay(1500);
本帖最后由 唐唐llll 于 2015-5-9 19:04 编辑
错误已经解决了,但是又有一个问题。
两个传感器之间的延迟只能在1000ms以上是怎么回事?如果调小了就会互相影响。但我的测量距离才不到1m而已。 超声波传感器可以测量角度?我只知道测距 suoma 发表于 2015-5-9 21:45 static/image/common/back.gif
超声波传感器可以测量角度?我只知道测距
两个并排的传感器通过距离差可以计算出角度。 唐唐llll 发表于 2015-5-11 17:06 static/image/common/back.gif
两个并排的传感器通过距离差可以计算出角度。
那就是两个可以当一个角度传感器 期待你分享原理图 :):):):):)
页:
[1]