[求助]想做个无按键的电子琴,怎样实现?

2012-08-021.9万
AI 快速预览详细 收起
本文介绍了如何使用七个超声波传感器制作无按键电子琴。项目中遇到了按下去声音延迟和音符重叠的问题,并通过调整超声波传感器的响应时间解决了这些问题。最终实现了流畅的演奏体验。

创作许可协议

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

评论(6)
微笑的rockets
微笑的rockets
可能需要一个功放模块吧。没有试过,可以试试。
Mickey
Mickey
可以的。
微笑的rockets
微笑的rockets
一个用光敏电阻制作的电子琴,给你参考下
材料
模拟环境光线传感器(Arduino兼容)
×8只
Romeo 三合一Arduino兼容控制器×1块
模拟压电陶瓷震动传感器(Arduino兼容)×1只
程序如下:[code]int _ABVAR_5_F4;
int _ABVAR_3_D4;
int _ABVAR_8_B4;
int _ABVAR_6_G4;
int _ABVAR_4_E4;
int _ABVAR_7_A4;
int _ABVAR_1_threshold;
int _ABVAR_9_C5;
int _ABVAR_2_C4;
void setup()
{
_ABVAR_5_F4 = 0;
_ABVAR_6_G4 = 0;
_ABVAR_8_B4 = 0;
_ABVAR_9_C5 = 0;
_ABVAR_7_A4 = 0;
_ABVAR_3_D4 = 0;
_ABVAR_1_threshold = 0;
_ABVAR_4_E4 = 0;
_ABVAR_2_C4 = 0;
}
void loop()
{
_ABVAR_1_threshold = 950 ;
_ABVAR_2_C4 = 262 ;
_ABVAR_3_D4 = 294 ;
_ABVAR_4_E4 = 330 ;
_ABVAR_5_F4 = 349 ;
_ABVAR_6_G4 = 392 ;
_ABVAR_7_A4 = 440 ;
_ABVAR_8_B4 = 494 ;
_ABVAR_9_C5 = 523 ;
while ( true )
{
if (( ( analogRead(A0) ) > ( _ABVAR_1_threshold ) ))
{
tone(13, _ABVAR_2_C4, 100);
}
if (( ( analogRead(A1) ) > ( _ABVAR_1_threshold ) ))
{
tone(13, _ABVAR_3_D4, 100);
}
if (( ( analogRead(A2) ) > ( _ABVAR_1_threshold ) ))
{
tone(13, _ABVAR_4_E4, 100);
}
if (( ( analogRead(A3) ) > ( _ABVAR_1_threshold ) ))
{
tone(13, _ABVAR_5_F4, 100);
}
if (( ( analogRead(A4) ) > ( _ABVAR_1_threshold ) ))
{
tone(13, _ABVAR_6_G4, 100);
}
if (( ( analogRead(A5) ) > ( _ABVAR_1_threshold ) ))
{
tone(13, _ABVAR_7_A4, 100);
}
if (( ( analogRead(A6) ) > ( _ABVAR_1_threshold ) ))
{
tone(13, _ABVAR_8_B4, 100);
}
if (( ( analogRead(A7) ) > ( _ABVAR_1_threshold ) ))
{
tone(13, _ABVAR_9_C5, 100);
}
delay( 90 );
}
}
[/code]
还可以
还可以
作者
回复微笑的rockets
谢谢,可否把声音传到功放通过音箱放出来。
yeadmin
yeadmin
另外的原因是超声波刷新率太低。 你需要超过30hz的传感器 才能跟得手得动作。Sharp得红外会比较好用。循线得距离太短。
Mickey
Mickey
超声波测量范围太大,可以考虑用红外测距。
还可以
还可以
作者
回复Mickey
是的,寻线传感 器都要好控制点。
还可以
还可以
作者
http://v.youku.com/v_show/id_XMzM1Njk0NDAw.html
看过这个视频,用一个根据距离能实现弹各个音,但也不能弹曲子。
- 没有更多了 -