【2B青年文艺转型】- 激光竖琴

2017-04-282.2万
AI 快速预览详细 收起
本文介绍了如何使用DFRduino Mega2560 V3.0控制器、模拟环境光线传感器等组件制作便携式激光竖琴。提供了详细的制作步骤和编程代码,适合零基础新手和音乐爱好者。成品图展示了激光竖琴的外观和演奏效果。
如题,

自己每次摸到乐器就会yy弹琴的样子: 如下

实在不济也是

【2B青年文艺转型】- 激光竖琴图14

家里妹子不久前告诉我“其实你是酱紫”

当时老子的心里是崩溃的
【2B青年文艺转型】- 激光竖琴图13
之前蘑菇云扔了台激光竖琴,卤煮家妹子做的,但带出去文(zhuang)艺(bi)实在是不方便。
所以就心想能不能搞个小的,出去浪也方便啊。


说搞就搞,身为蘑菇云搞事情一把手 首先是 买买买BOM清单
1> Φ12mm直径10mW532nm绿光激光模组点状定位瞄准绿色激光头发射管 * 7
2> 模拟环境光线传感器(Arduino兼容) DFR0026 * 7
3> DFRduino Mega2560 V3.0控制器  DFR0165* 1  
别问我为啥用mega,有钱任性(要7个模拟口啊妈蛋,uno只有6个啊mdzz)
4> DFR0165 MEGA传感器扩展板 V2.4 (Arduino兼容) * 1
5> MIDIPLUS miniengine USB MIDI键盘专用硬音源 合成器音源 *1
(这个音源也能当充电宝给arduino供电,好方便哈哈哈哈哈哈)
6> 合成板木片,激光切割板材600mm*600mm*4mm  * 6 留了一张备用
7> 3v2a电源适配器 * 1
也别问我为啥用这么奇葩的电源适配器,激光头是3V的,实测电流300mA,7个加起来共2.1A,能买到的功率最大的就3v2a,凑合用了(应该炸不了)。。。
8> midi连接线USB连接线,等等。





制作过程 之 切割木板,装配(图纸已上传):

【2B青年文艺转型】- 激光竖琴图1【2B青年文艺转型】- 激光竖琴图2【2B青年文艺转型】- 激光竖琴图3【2B青年文艺转型】- 激光竖琴图4【2B青年文艺转型】- 激光竖琴图5

从下到上,共5层,分别为底板,夹层板*3(包括激光头位置,线位,洞洞板的位置),面板(雕刻花纹,logo)
一层一层的叠起来 ↓↓↓
【2B青年文艺转型】- 激光竖琴图7


中间是激光头的卡槽 ↓↓↓
【2B青年文艺转型】- 激光竖琴图6

激光头装进去,线路焊在洞洞板上,接出正负极两根线,盖上面板,上螺丝。
【2B青年文艺转型】- 激光竖琴图9【2B青年文艺转型】- 激光竖琴图8

然后安装传感器在上面,用万能的热胶枪

【2B青年文艺转型】- 激光竖琴图10
完了再把mega主控板pia唧到上面,接线。

【2B青年文艺转型】- 激光竖琴图12
成品图是酱紫的

【2B青年文艺转型】- 激光竖琴图11




当然身体有了,还缺个聪明的大脑,下面程序奉上
  1. /***************************************************************************
  2. * 激光竖琴                                                                *
  3. * Version: 1.0.0                                                          *
  4. * Date:    Apr 06 2017                                                    *
  5. * Name:    Richard Lyu                                                    *
  6. * Email:   <a href="mailto:Richard.lyu@dfrobot.com" target="_blank">Richard.lyu@dfrobot.com</a>                                        *
  7. *                                                                         *
  8. ***************************************************************************/
  9. static const unsigned ledPin = 13;      // LED pin on Arduino Uno
  10. static const unsigned Laser[] = {A6,A7,A8,A9,A10,A11,A12};      // Laser on Arduino Uno
  11. static const unsigned LaserThreshold = 500;      // 阈值,调整大小以适应外部环境光线条件
  12. static const unsigned note[] = {42,43,44,45,46,47,48}; //  修改数组里的数字 调整音高
  13. void setup()
  14. {
  15.     pinMode(ledPin, OUTPUT);
  16.     Serial.begin(31250);
  17.   // play notes from F#-0 (0x1E) to F#-5 (0x5A):
  18.   for (int i = 0x1E; i < 0x5A; i++) {
  19.     //Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
  20.        noteOn(0x90, i, 0x45);   // Send a Note (pitch 42, velo 127 on channel 1)
  21.     delay(100);
  22.     //Note on channel 1 (0x90), some note value (note), silent velocity (0x00):
  23.       noteOn(0x90, i, 0x00);    // Send a Note (pitch 42, velo 127 on channel 1)
  24.     delay(100);
  25.   }
  26. }
  27. bool StatePre[7] = {false,false,false,false,false,false,false};
  28. bool StateCur[7] = {false,false,false,false,false,false,false};
  29. //  plays a MIDI note.  Doesn't check to see that
  30. //  cmd is greater than 127, or that data values are  less than 127:
  31. void noteOn(int cmd, int pitch, int velocity) {
  32.   Serial.write(cmd);
  33.   Serial.write(pitch);
  34.   Serial.write(velocity);
  35. }
  36. void loop()
  37. {
  38.   for(int i = 0;i<7;i++){
  39.   /*******  Detecting currently if the laser is fired on the sensor  **********/
  40.     if (analogRead(Laser) > LaserThreshold ){               
  41.        StateCur = true;   
  42.     }else{
  43.        StateCur = false;
  44.     }
  45. /********            Determine if sound should be played        *************/
  46.     if(StateCur == true && StatePre == false){     
  47.         noteOn(0x90, note, 0x45);
  48.         digitalWrite(ledPin, HIGH);
  49.     }else if(StateCur == true && StatePre == false){
  50.         noteOn(0x90, note, 0x00);
  51.         digitalWrite(ledPin, LOW);      
  52.     }
  53. /******   shifting in the current state to previous state     ***************/
  54.     StatePre = StateCur;
  55.   }
  56.         delay(50);
  57. }
复制代码

最后放上演奏效果


嗨我就不明白,为啥汉子和妹子差距这么多呢(看下面视频)

@nicho

LasrHarp.zip

248.69 KB, 下载次数: 7822

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(14)
派大星ym
派大星ym
,,,,
派大星ym
派大星ym
学习了学习了
封子
封子
请教一下,midi这块是怎么连接的?一直想搞midi这块玩一玩,但是一直不知道该用什么设备,怎么连接。感谢感谢。
珑冰
珑冰回复封子
大佬研究懂了吗
陆伯孔
陆伯孔
那个激光灯是怎么安装的,怎么供电的?还是不太清楚
小马1
小马1
哇啊 我真的好喜欢呀 做的真不错呀 非常棒
晚丶安
晚丶安
:))
1214454457
1214454457
线看不到呀
胡秩通123
胡秩通123

nicho
nicho
哈哈哈哈哈哈哈
iooops
iooops
哈哈哈哈哈哈哈 = =
iooops
iooops
评论内容
iooops
iooops
好吧 = = 这个除了瞅起来不错用起来还是有点蛋疼的 = =
Forgotten
Forgotten
最后两个乱入什么情况
Richard.Su
Richard.Su
瓦萨,你们搞出来了,66666666
- 没有更多了 -