amxamx 发表于 2015-1-10 16:34:13

arduino用超声波测距控制音调

本帖最后由 amxamx 于 2015-1-11 17:32 编辑


ps:VBB里面没有找到我用的超声波,我的是四个接口的。

连线如图,问题是我想两个超声波通过不同的距离发出两个音调,但是总是有一个音调不对,感觉就是不能发出,就是一个声音发出正常,一个特别小而且音调不对。求大神帮忙啊。。。
ARDUINO 代码
int _ABVAR_2_L2;
int _ABVAR_1_L1;
int ardublockUltrasonicSensorCodeAutoGeneratedReturnCM(int trigPin, int echoPin)
{
int duration;
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
duration = duration / 59;
return duration;
}


void setup()
{
digitalWrite( 12 , LOW );

_ABVAR_2_L2 = 0;
_ABVAR_1_L1 = 0;
digitalWrite( 10 , LOW );

}

void loop()
{
_ABVAR_1_L1 = ardublockUltrasonicSensorCodeAutoGeneratedReturnCM( 12 , 11 ) ;
_ABVAR_2_L2 = ardublockUltrasonicSensorCodeAutoGeneratedReturnCM( 10 , 9 ) ;
if (( ( ( _ABVAR_1_L1 ) < ( 10 ) ) && ( ( _ABVAR_1_L1 ) > ( 0 ) ) && ( ( _ABVAR_2_L2 ) > ( 10 ) ) ))
{
tone(8, map ( _ABVAR_1_L1 , 0 , 10 , 392 , 392 ) );
}
else
{
noTone(8);
}
if (( ( ( _ABVAR_2_L2 ) < ( 10 ) ) && ( ( _ABVAR_2_L2 ) > ( 0 ) )&& ( ( _ABVAR_1_L1 ) > ( 10 ) ) ))
{
tone(8, map ( _ABVAR_2_L2 , 0 , 10 , 330 , 330 ) );
}
else
{
noTone(8);
}
}

林定祥 发表于 2015-1-10 21:17:24

是否两个超声传感器间干扰?

amxamx 发表于 2015-1-10 21:49:13

林定祥 发表于 2015-1-10 21:17 static/image/common/back.gif
是否两个超声传感器间干扰?

应该不是的,因为程序设定的,发声的条件是:①发声的超声波距离在0-10cm之间;②另一个超声波距离大于10cm。
要发声就只用遮住一个就好。

suoma 发表于 2015-1-10 22:02:04

两个超声传感器间方向一样吗?

suoma 发表于 2015-1-10 22:02:30

我也担心存在干扰

suoma 发表于 2015-1-10 22:03:52

仅仅音调不对,每个音节对应频率,你可以改一下

amxamx 发表于 2015-1-10 23:37:30

suoma 发表于 2015-1-10 22:03 static/image/common/back.gif
仅仅音调不对,每个音节对应频率,你可以改一下

频率对了,就是发声的时候不对,发的声不是那个频率。

林定祥 发表于 2015-1-11 08:26:47

如够A或B发出的超声,A和B都收到了,那就是两个声音的合成了:D:D

林定祥 发表于 2015-1-11 08:27:54

还是建议,在不正常时想法隔离下看看是否相互干扰到。

amxamx 发表于 2015-1-11 17:31:51

林定祥 发表于 2015-1-11 08:27 static/image/common/back.gif
还是建议,在不正常时想法隔离下看看是否相互干扰到。

恩恩,应该不是干扰。我也没明白什么情况,现在貌似没有问题了。。。
页: [1]
查看完整版本: arduino用超声波测距控制音调