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 static/image/common/back.gif
是否两个超声传感器间干扰?
应该不是的,因为程序设定的,发声的条件是:①发声的超声波距离在0-10cm之间;②另一个超声波距离大于10cm。
要发声就只用遮住一个就好。 两个超声传感器间方向一样吗? 我也担心存在干扰 仅仅音调不对,每个音节对应频率,你可以改一下 suoma 发表于 2015-1-10 22:03 static/image/common/back.gif
仅仅音调不对,每个音节对应频率,你可以改一下
频率对了,就是发声的时候不对,发的声不是那个频率。 如够A或B发出的超声,A和B都收到了,那就是两个声音的合成了:D:D 还是建议,在不正常时想法隔离下看看是否相互干扰到。
林定祥 发表于 2015-1-11 08:27 static/image/common/back.gif
还是建议,在不正常时想法隔离下看看是否相互干扰到。
恩恩,应该不是干扰。我也没明白什么情况,现在貌似没有问题了。。。
页:
[1]