效果演示
arduino入门- 声源定位模组进行SG90伺服马达方向控
利用声源定制追踪制作的一个小玩意.使用arduino开发板做的.程序很简单.没有难度.主要是声源定位模组使用的是全硬件搭建.不需要去做调试和研究算法.
声源定位核心板和麦克风阵列板
声源定位核心板和测试底座
我使用了声源定位板的测试底座来连接,这样方便很多.这个不是必需要的,有别的支架可以不用这个底座效果也是一样的.我是找不到合适的支架就用这个现成的.还用了两块.
声源核心板
麦克风阵列板
SG90伺服马达和云台
声源定位板和arduino的硬件连接
声源定位核心板把360度的声场平均分为6个角度范围.每个角度为60度.核心板上有6个角度的IO口.当某个角度追踪到声音的时候.相应的角度IO口会发送高电平指示.非常简单.
一.声源定位板脚位设置
由于伺服马达只能转动180度.所以我在声源定位上取了从0-180度四个脚位的IO分别送入arduino的2.3.4.5号脚位.再把核心板的负极接arduino共地.
二.arduino脚位设置
声源定位板需要单独供电,采用usb直接供电
组装完成:
arduino程序:
程序很简单.只要调用arduino的伺服马达库,然后定义0-180度四个脚位2.3.4.5为输入脚.默认舵机控制脚为9.
#include <Servo.h>
int i= 0;
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
pinMode(2,INPUT);//定义0度角度输入脚位
pinMode(3,INPUT);//定义60度角度输入脚位
pinMode(4,INPUT);//定义120度角度输入脚位
pinMode(5,INPUT);//定义180度输入脚位
myservo.attach(9); //定义舵机脚位 attaches the servo on pin 9 to the servo object
}
void loop() {
if (digitalRead(2) ==HIGH)//如果2脚电平为HIGH
{ myservo.write(0); //伺服马达转动到0度
delay(100); } //定义延迟100毫秒
if (digitalRead(3) ==HIGH) //如果3脚电平为HIGH
{ myservo.write(60); //伺服马达转动到60度
delay(100); } //延迟100毫秒
if (digitalRead(4) ==HIGH) //如果4脚电平为HIGH
{ myservo.write(120); //伺服马达转动到120度
delay(100); } //延迟100毫秒
if (digitalRead(5) ==HIGH) //如果5脚电平为HIGH
{ myservo.write(180); //伺服马达转动到180度
delay(100); } //延迟100毫秒
}
把以上程序入arduino,声源定位板接入usb电源.就可以进行测试了.
结束语:
这个声源定位板应为是纯硬件搭建..直接就可以进行应用.所以可以为我们省去声音定位软件的研究和调试.而且每个角度给出高电平指示.,编写arduino程序也非常简单.只要先调用自带的伺服马达库.然后根据声源板的每个角度给出的电平让arduino指定脚位输入.就可以实现当哪个角度有声源的时候.伺服马达就会向哪个角度转动.是不是很简单?有兴趣可以试试.
标签:脚位,声源,伺服,arduino,开发板,声控,马达,定位 From: https://blog.51cto.com/deyu/9011940