我想制作一款仿泰勒明、特雷门电子琴,根据距离传感器的距离长短,产生不同的音律,然后来演奏
外壳将使用3D打印的盒子制作
我是比较懒的人,虽然东西早就做好了,但是看见其他人还没交作业,我就一直也没整理材料,要不是Ash催我,我估计还得等很长一段时间,首先感谢Ash赠送的Arduino编程积木套件 和红外测距传感器
简单介绍下泰勒明、特雷门电子琴
当然我们这次制作的特雷门琴和这个原理并不一样,但是也是通过手在空中位置来演奏音乐。
下面我将制作过程分析给大家@Ash
制作材料
1、Arduino编程积木套件
我们需要用到里面的UNO主控板、 IO传感器扩展板 V7.1和数字蜂鸣器模块
2、红外测距传感器SHARP GP2Y0A41SKOF 红外距离传感器 (4-30cm)
二、连线方式:
将IO传感器扩展板 插在DFRduino UNO R3 上
将SHARP GPY2D120X红外距离传感器的杜邦3PIN线接
IO传感器扩展板 的A1引脚上
将数字蜂鸣器模块的杜邦3PIN线接在 IO传感器扩展板 的9引脚上
三、代码
- /connect gp2d120x to A1
- #define pin A1
-
- #define NTD1 294
- #define NTD2 330
- #define NTD3 350
- #define NTD4 393
- #define NTD5 441
- #define NTD6 495
- #define NTD7 556
- int tonepin=9;
- void setup () {
- Serial.begin (9600);
- pinMode(pin, INPUT);
- pinMode(tonepin,OUTPUT);
- }
-
- void loop () {
- uint16_t value = analogRead (pin);
- double distance = get_IR (value); //Convert the analog voltage to the distance
- if(distance>5&&distance<8){
- tone(tonepin,NTD1);
- }
- if(distance>8&&distance<11){
- tone(tonepin,NTD2);
- }
- if(distance>11&&distance<14){
- tone(tonepin,NTD3);
- }
- if(distance>14&&distance<17){
- tone(tonepin,NTD4);
- }
- if(distance>17&&distance<20){
- tone(tonepin,NTD5);
- }
- if(distance>20&&distance<23){
- tone(tonepin,NTD6);
- }
- if(distance>23&&distance<26){
- tone(tonepin,NTD7);
- }
- //Serial.println (value); //Print the data to the Arduino serial monitor
- Serial.print (distance);
- Serial.println (" cm");
- Serial.println ();
- delay (500); //Delay 0.5s
- noTone(tonepin);
- }
-
- //return distance (cm)
- double get_IR (uint16_t value) {
- if (value < 16) value = 16;
- return 2076.0 / (value - 11.0);
- }
-
- /******** end code ********/
复制代码
制作过程的照片
|