目录
- SG90伺服马达和云台
- 声源定位板和arduino的硬件连接
- 一.声源定位板脚位设置
- 二.arduino脚位设置
- 组装完成:
- arduino程序:
- 结束语:
本文介绍如何使用Arduino和声源定位模组控制SG90伺服马达,通过声源定位核心板的IO信号,实现马达在不同角度的定向转动,程序简单无需复杂算法。
arduino入门- 声源定位模组进行SG90伺服马达方向控
视频链接:https://www.bilibili.com/video/BV15TtGz5EH1/

利用声源定制追踪制作的一个小玩意.使用arduino开发板做的.程序很简单.没有难度.主要是声源定位模组使用的是全硬件搭建.不需要去做调试和研究算法.
声源定位核心板和测试底座


我使用了声源定位板的测试底座来连接,这样方便很多.这个不是必需要的,有别的支架可以不用这个底座效果也是一样的.我是找不到合适的支架就用这个现成的.还用了两块.


SG90伺服马达和云台


声源定位板和arduino的硬件连接
声源定位核心板把360度的声场平均分为6个角度范围.每个角度为60度.核心板上有6个角度的IO口.当某个角度追踪到声音的时候.相应的角度IO口会发送高电平指示.非常简单.


一.声源定位板脚位设置
由于伺服马达只能转动180度.所以我在声源定位上取了从0-180度四个脚位的IO分别送入arduino的2.3.4.5号脚位.再把核心板的负极接arduino共地.


二.arduino脚位设置


组装完成:

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,声源定位板接入usb电源.就可以进行测试了.
结束语:
这个声源定位板应为是纯硬件搭建..直接就可以进行应用.所以可以为我们省去声音定位软件的研究和调试.而且每个角度给出高电平指示.,编写arduino程序也非常简单.只要先调用自带的伺服马达库.然后根据声源板的每个角度给出的电平让arduino指定脚位输入.就可以实现当哪个角度有声源的时候.伺服马达就会向哪个角度转动.是不是很简单?有兴趣可以试试.
全部评论