在这个项目中,我们将使用Arduino构建娱乐性。我们所有人都有点击Table或Pen来创建随机音乐的习惯。当然,它可能不被认为是一种良好的举止,但是我们所有人至少喜欢这样做一次。因此,我想通过使用Arduino的音调功能将其提升到一个新的水平。一旦建立了这个项目,您就可以通过在任何导电的东西上轻拍手指来产生音调,并创建自己的节奏,就像在手掌上弹奏钢琴一样。听起来不错,让我们来构建它。
所需组件:
下面列出了该项目所需的材料,并非必须坚持使用。一旦掌握了概念,就可以使用自己的方式来构建它。
- Arduini Pro Mini
- Peizo Speaker
- 柔性传感器
- 手指手套
- 10K电阻器
- BC547晶体管
- 9V电池
电路图和说明:
该Arduino Palm Piano的电路图如下所示。
该项目总共使用四个传感器,即两个柔性传感器和两个达林顿对充当触摸传感器。我们还使用了两个下拉电阻R1和R2,每个电阻的阻值为10k,它们将用作Flex传感器的下拉电阻。在此,Flex传感器可根据一根手指弯曲的程度,用一根手指产生三种不同的音调。因此,我们可以用两个手指产生6种声音。在此处了解有关柔性传感器的信息。
达灵顿对:
在我们继续之前,重要的是要了解什么是达灵顿以及它在我们的项目中如何工作。达林顿对可以定义为两个双极晶体管,其连接方式是使第一个晶体管放大的电流被第二个晶体管放大。下图显示了达林顿对:
如上所示,我们使用了两个BC547晶体管,它们的集电极绑在一起以聚集,并且第一个晶体管的发射极与第二个晶体管的基极相连。该电路用作具有增益的放大器,这意味着提供给第一晶体管基极的任何小信号都足以偏置第二晶体管的基极。我们的身体在这里起着接地的作用,因此每当我们触摸晶体管的基极时,第二个晶体管就会偏置。以此为我们的青睐,我们为该项目构建了触摸传感器。
2号和3号引脚是Arduino上的中断引脚,将通过内部上拉电阻将其拉高,然后只要达林顿开关闭合,这些引脚都将接地。这样,每次我们触摸导线(从第一个晶体管的基极开始),Arduino都会触发中断。
用两个手指只能产生两种类型的音调,因此我还加了一个弯曲传感器,该传感器可以根据弯曲程度来改变音调。我已编程为根据手指(弯曲传感器)弯曲的程度,为每个手指产生三种不同的音调。如果您想在指尖增加音调,可以增加此数字。
我将整个木板制作在一块穿孔板上,以使其易于放入手掌,但是您也可以使用面包板。只要确保您的身体在某些时候接触电路的接地即可。焊接完所有东西后,它应该看起来像这样
我已经用两副手指手套将达林顿线对和挠曲传感器的电线固定在上面所示的位置。您可以提出自己的想法(如果可能的话),以便在演奏音调时将其固定在适当的位置。
Arduino程式设计:
此Arduino Tap Tone Generator的程序非常简单。我们只需要注意达林顿电线的中断,如果发现了中断,我们就必须发出声音,这取决于弯曲传感器的弯曲程度。完整的代码在本文的结尾给出,但是我在下面解释了几个重要的块。
注意:该程序在库“ pitches.h”的帮助下工作。因此,在编译之前,请确保已将头文件添加到程序中。您可以从此处下载pitches.h头文件。
在 设置 功能中,我们使用上拉电阻将引脚2和3初始化为输入。我们也将它们声明为中断引脚,并在引脚2发生中断时执行tone1(),而在第三个引脚发生中断时执行tone2()函数。只要这些引脚从上拉状态变为低电平,就会触发这些中断。
void setup(){pinMode(2,INPUT_PULLUP); pinMode(3,INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(2),tone1,LOW); attachInterrupt(digitalPinToInterrupt(3),tone2,LOW); Serial.begin(9600); }
在 循环 功能内部,我们不断检查弯曲传感器的弯曲程度。例如,我的FlexSensor 1放平时会给出大约200的值,而当我将其弯曲到最大时会一直下降到130,所以我必须将200到130的值映射为1到3,因为我必须玩3种不同的类型的色调。您必须根据Flex传感器的值和音调来调整这两行。
void loop(){flexSensor1 = map(analogRead(A0),200,130,1,3); //根据您的弹性传感器flexSensor2 = map(analogRead(A1),170,185,1,3)用自己的值进行映射 //根据您的柔性传感器使用自己的值进行映射}
正如我们前面看到的功能 TONE1() 时,在引脚2上的内部发生的事情是检测到的中断将被执行 ()TONE1 功能如上图所示。我们查看FlexSensor1的值,并根据flexSesnor值播放音调。音调将使用Arduino的Tone功能播放。我们已经在上一个项目中解释了tone()函数。
void tone1(){if(flexSensor1 == 1)tone(8,NOTE_D4,50); 否则(flexSensor1 == 2)tone(8,NOTE_A3,50); 否则(flexSensor1 == 3)tone(8,NOTE_G4,50); 其他音调(8,NOTE_D4,50); }
下一行用于播放音调。您可以播放“ pitches.h”头文件中可用的任何音调。例如,上面的行在针脚上播放NOTE_A3,持续时间为50毫秒。
tone(8,NOTE_A3,50); // tone(PinNum,音符名称,持续时间);
加工:
硬件准备就绪后,上传代码并将其安装在手指上。确保您的身体在某个时候接触电路的接地。现在,只需触摸任何导电材料或您的身体,您就应该能够听到相应的声音。您可以通过在不同的时间间隔和不同的位置点击来播放自己的旋律或音乐。
以下视频显示了该项目的完整工作。希望您喜欢这个项目,可以在下面的评论部分中发布任何建议或问题。还要检查我们的Arduino音频播放器和Arduino音调生成器项目。