ITEAD创易工作室 发表于 2014-9-19 14:45:52

【教程】使用超声波用手势控制arduino音乐播放



Hi,long time no see!今天给小伙伴们带来一个真正可以提升逼格的教程,手势控制音乐!

需要用到的配件:


ITEAD的这个MP3音乐扩展板可以播放内存卡或者U盘里面的MP3音乐文件,输出是标准的耳机接口,可以接耳机、音响(额外供电)等。详细资料和库下载:http://pan.baidu.com/s/1eQnFEqI

实物硬件连接如下:



MP3音乐扩展板直接叠加到UNO,HC-SR04的接线如下图:



烧写以下代码到UNO:
const int EchoPin = 2; //超声波信号输入
const int TrigPin = 3; //超声波控制信号输出
int currDist = 0;
void setup(){
pinMode(EchoPin, INPUT);
for (int pinindex = 3; pinindex < 8; pinindex++) {
    pinMode(pinindex, OUTPUT); // set pins 3 to 10 as outputs
}
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
digitalWrite(A0,LOW);
digitalWrite(A1,LOW);
digitalWrite(A2,LOW);
digitalWrite(A3,LOW);
Serial.begin(9600);
}

void loop(){

currDist = MeasuringDistance(); //读取前端距离
//Serial.println(currDist);
if(currDist > 25){
   
}
//power开关看个人需要,这里没有启用
//else if(currDist < 8){
   
   // mpower();
// }
   else if(currDist < 7){
   
    mpause();
}
    else if(currDist < 15){

    mnext();
   
}
    else if(currDist < 25){
   
    mprev();
   
}


}
long MeasuringDistance() {
long duration;

digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);


duration = pulseIn(EchoPin, HIGH);

return duration / 29 / 2;
}
//mplay播放
void mplay() {
digitalWrite(A0, HIGH);
delay(100);
digitalWrite(A0, LOW);
Serial.println("mplay");
}

//mprev上一首
void mprev() {
digitalWrite(A1, HIGH);
delay(1000);
digitalWrite(A1, LOW);
Serial.println("mprev");
}

//mnext下一首
void mnext() {
digitalWrite(A2, HIGH);
//return;
delay(1000);
digitalWrite(A2, LOW);
Serial.println("mnext");
}

//mpause暂停
void mpause() {
digitalWrite(A0, HIGH);
delay(1000);
digitalWrite(A0, LOW);
   Serial.println("mpause");
}
//mpower
//void mpower() {
// digitalWrite(A3, HIGH);
// delay(500);
//digitalWrite(A3, LOW);
// Serial.println("mpower");
//}



控制的原理就是通过超声波检测到不同距离的范围值来控制音乐扩展板上的A0-A3四个信号脚。因为HC-SR04有盲区,最低检测距离最好是在7cm以上,可以自己多调试。

另外内存卡里面的音乐文件排序在music扩展板读取的时候好像是相反的,切换上下首的顺序相反。如果介意的话可以把程序里的上下首切换的距离反过来。



因为这个music扩展板只占用了4个引脚,小伙伴们可以添加跟多的传感器来控制音乐播放:再加一个超声波模块控制音量;使用人体红外传感器制作音乐门铃等等。大开脑洞吧!

最后,演示视频如下:
http://player.youku.com/player.php/sid/XNzg1MTkwOTcy/v.swf
PS: 手机拍的,拿反了,用格式工厂旋转后视频会变形,不太懂怎么弄,有懂行的小伙伴可以帮我弄下吗?

hi55234 发表于 2014-9-19 18:03:57

本帖最后由 hi55234 于 2014-9-19 18:06 编辑

:L这不是手势控制,而是距离控制吧~~~~~~~·

障碍物距离决定具体动作~~~

粗看逼格甚高,实际操作甚糟~~~~

真手势,至少也得模仿所谓魔术棒遥控的方式啊~~~~

如果用超声波,极限也就是节拍控制······

ITEAD创易工作室 发表于 2014-9-20 09:31:09

hi55234 发表于 2014-9-19 18:03 static/image/common/back.gif
这不是手势控制,而是距离控制吧~~~~~~~·

障碍物距离决定具体动作~~~


哈哈~粗看逼格甚高,实际操作甚糟~~完美的解释了这个教程!

DIY的东西纯属娱乐,感兴趣的朋友可以互相学习交流下。

zz749964801 发表于 2015-3-28 19:13:13

不用音乐扩展版    用MP3音乐播放模块怎么连线呢?

蓝色骨骨头 发表于 2015-4-17 12:20:45

楼主 问一下 这个音箱是怎么连接到板子上的

ITEAD创易工作室 发表于 2015-4-17 15:13:11

蓝色骨骨头 发表于 2015-4-17 12:20 static/image/common/back.gif
楼主 问一下 这个音箱是怎么连接到板子上的

板子上已经带有音频输出接口了。直接捅上即可。

蓝色骨骨头 发表于 2015-4-21 08:46:55

ITEAD创易工作室 发表于 2015-4-17 15:13 static/image/common/back.gif
板子上已经带有音频输出接口了。直接捅上即可。

可是音箱的插口不是类似耳机孔那样的么 是不是还要转接线之类的 还有大神 如果想用按键控制音乐播放怎么做到啊

ZYJ111 发表于 2017-6-19 18:12:00

请问楼主,这个MP3板具体的型号是什么
页: [1]
查看完整版本: 【教程】使用超声波用手势控制arduino音乐播放