当前位置:首页  <  应用教程  <  【创客学堂】基于ArduinoUNO与超声波传感器的音乐魔方...
【创客学堂】基于Arduino UNO与超声波传感器的音乐魔方
编辑:Techie 2013-08-23 浏览次数:1443

    听说过Dodecaudion吗?它是一个魔方,一个有 “12只眼”的音乐魔方。   一个叫panGenator的波兰艺术团队发明了它,为了能让艺术家们在演奏时,可以能通过动作与表演,来与观众互动,给人更好的视觉享受。当演奏者的手势靠近这个音乐魔方的12只眼时,这款音乐魔方里面的红外传感器会感知到距离,传输到特制的Arduino平台,把数据传输到外部硬件,处理后播放音乐或是作出即定的动作。

艺术家在用“12只眼”的音乐魔方激情演奏
图1 艺术家在用音乐魔方激情演奏


    很炫很酷吧?想不想把玩一下?标准款的 Dodecaudion 尺寸约为 21 x 21 x 21 cm, 售价在1288美金,还想玩吗?反正对于我这样兜比脸干净的人来说,是伤不起滴。但同时,在一个Arduino爱好者这里,方法总比问题多,只要明白了原理,给我一个支点,我也能撬动地球,哈哈,咱自己做一个不就OK了?

伤不起“12只眼”的音乐魔方 ,我们做得起


    冲进我的百宝堆,开始搜索--1.控制器,是必须的,这里有块Arduino UNO,还有块Arduino传感器扩展板呢,OK;2.传感器,我翻我翻,哎,没有红外线传感器,只有两个RB UF02的超声波传感器,不过原理上是检测手与音乐魔方的距离,它们也成,OK;连接线:找到一堆杜邦线,OK;这不就齐活儿了嘛,哈哈。等等,这是什么?一个LED Bar,可以让它随音乐跳动啊,这不就比那“12只眼”的音乐魔方又多了一个光影元素嘛 ,very OK!

Arduino UNO R3控制器            Arduino 传感器扩展板 V5.0

图2 Arduino UNO R3控制器                    图3 Arduino 传感器扩展板v5.0 

 RB-UF02超声波传感器           LED Bar

图4 RB-UF02超声波传感器                      图5 LED Bar

 


    好了,硬件齐备,可以编程序啦。总的原理是:用超声波传感器检测出手与”音乐魔方”的距离,Arduino UNO把距离值转成一个延时,控制引脚输出一个频率随其变化的方波,输入到电脑里,用音乐软件改变音色,营造出奇幻的声音;同时,用这个数据控制LED Bar,使其随音乐跳动,哦了。
下面是简单编的程序

#include "LED_Bar.h"//special Lib for LED Bar
LED_Bar myLED;
int value = 0;
int inputPin=4;  // 定义超声波信号接收接口ECHO
int outputPin=5; // 定义超声波信号发出接口TRIG
int music=13;
void setup()
{
  Serial.begin(9600);//定义串口波特率
  pinMode(inputPin, INPUT);//定义与超声波传感器探头联接的脚的输入输出模式
  pinMode(outputPin, OUTPUT);
  pinMode(music,OUTPUT);
  myLED.set_LED_Index(0b000001101010101);
  delay(500);
}
void loop()
{
  digitalWrite(outputPin, LOW); // 使发出发出超声波信号接口低电平2μs
  delayMicroseconds(2);
  digitalWrite(outputPin, HIGH); // 使发出发出超声波信号接口高电平10μs  delayMicroseconds(10);
  digitalWrite(outputPin, LOW);    // 保持发出超声波信号接口低电平
  int distance = pulseIn(inputPin, HIGH);  // 读出脉冲时间
  distance= distance/58;   // 用公式将脉冲时间转化为距离(单位为厘米)
  //Serial.println(distance);   //输出距离数值,测试用                
  int value=map(distance,1,30,1,8);//数值转换
 // Serial.println(value);
  myLED.set_LED_Range(value);
  int fm=map(distance,1,30,40,5000);
  digitalWrite(music,HIGH);
  delayMicroseconds(fm);
  digitalWrite(music,LOW);
  delayMicroseconds(fm);
}

1只眼的“音乐魔方”

自制“1只眼”的音乐魔方

   图6  “1只眼”的音乐魔方演奏中的样子

    这样下来做成的充其量能算个普通盒子,想让它成为炫酷的音乐魔方,你还要花些功夫,去下载一个电吉它音色效果软件,通过调节,你可以得到N多种音色:哇音,回响,失真,太空音,平时我们得有吉它才能弹奏,现在通过这个Arduino“音乐魔方”超声波传感器通过手势动作,你也可以像panGenator团队玩Dodecaudion那样演奏一番啦。


相关链接:
Arduino UNO R3控制器
http://www.alsrobot.cn/goods-141.html
传感器扩展板
http://www.alsrobot.cn/goods-147.html
RB-UF02超声波传感器
http://www.alsrobot.cn/goods-132.html
Rebacca的博客关于超声波传感器的文章
http://blog.sina.com.cn/s/blog_5e4725590100edj6.html
科技前沿关于超声波传感器的文章 
http://www.alsrobot.cn/article-79.html
LED Bar的Arduino库文件 http://pan.baidu.com/share/link?shareid=4264065236&uk=2751748372