唐唐llll 发表于 2015-5-9 09:50:21

谁能帮我看下这个两个超声波传感器计算偏转角度的函数哪里错了,应该怎么改?

本帖最后由 唐唐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 09:51:12

本帖最后由 唐唐llll 于 2015-5-9 19:04 编辑

错误已经解决了,但是又有一个问题。
两个传感器之间的延迟只能在1000ms以上是怎么回事?如果调小了就会互相影响。但我的测量距离才不到1m而已。

suoma 发表于 2015-5-9 21:45:07

超声波传感器可以测量角度?我只知道测距

唐唐llll 发表于 2015-5-11 17:06:52

suoma 发表于 2015-5-9 21:45 static/image/common/back.gif
超声波传感器可以测量角度?我只知道测距

两个并排的传感器通过距离差可以计算出角度。

suoma 发表于 2015-5-11 17:24:52

唐唐llll 发表于 2015-5-11 17:06 static/image/common/back.gif
两个并排的传感器通过距离差可以计算出角度。

那就是两个可以当一个角度传感器

suoma 发表于 2015-5-11 17:25:22

期待你分享原理图

sduyArduino 发表于 2016-9-6 12:00:42

:):):):):)
页: [1]
查看完整版本: 谁能帮我看下这个两个超声波传感器计算偏转角度的函数哪里错了,应该怎么改?