基于Arduino自制钢琴实现录音和重放功能
对于那些没有电子知识背景的人来说,Arduino开发板是一个轻松制作小产品的福音。它是一个壮大的原型制作工具,并且尝试一些很酷的东西,在本篇文章中我们将运用Arduino开发板构建一个小而有趣的钢琴。这款钢琴独有8个按钮和一个蜂鸣器。它运用Arduino的tone()函数在扬声器上创建各品种型的钢琴音符。为了使它更有趣,我们在项目中添加了录制功能,这使我们能够播放曲目并在须要时反复播放。听起来很有趣!!所以让我们一起初始制作......
///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程和毕业设计指导,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像白色字体加我也能领取哦,记得口令陈老师///
所需素材:
● Arduino Uno开发板
● LCD显示屏1602
● 蜂鸣器
● 电位器10k
● SPDT开关
● 按钮(8个)
● 电阻
● 面包板
● 连接导线
电路原理图:
完整的Arduino钢琴项目能够在面包板上运用一些连接线来构建。运用fritzing制作的电路图显示了项目标面包板视图如下所示:
只需依照电路图并相应地连接导线,按钮和蜂鸣器与PCB模块一起运用,但在现实中硬件中我们只运用了开关和蜂鸣器,由于它们具有相同类型的引脚,所以不应该太多混同。您还能够参照下面的硬件图像来建设连接。
左侧电阻的值按以下顺序排列,10k,560R,1.5k,2.6k,3.9,5.6k,6.8k,8.2k和10k。假如您没有相同的DPST开关,您能够运用正常的拨动开关,如上面电路图所示。此时让我们看看项目标原理图,以了解我们为什么建设了以下连接。
原理图和说明:
下面给出了上面显示的电路图的原理图,它也是使用Fritzing制作的。
我们必需了解的一个主要连接是我们怎么样通过模拟A0引脚将8个按钮连接到Arduino。根本上我们须要8个输写引脚,它们能够连接到8个输写按钮,但对于这样的项目,我们不能仅仅将微控制器的8个引脚用于按钮,由于我们可能须要它们供以后运用。在我们的例子中,我们将LCD显示器连接起来。
因此,我们运用Arduino的模拟引脚,并构成具有不同电阻值的分压器,以完成电路。这样,当按下每个按钮时,将向模拟引脚提供不同的模拟电压。下面显示了一个独有两个电阻和两个按钮的采样电路。
在这种情况下,当没有按下按钮时,ADC引脚将接管+ 5V,假如按下第一个按钮,则通过560R电阻完成分压器,假如按下第二个按钮,则运用一.5竞争分压器。 k电阻。这样,ADC引脚接管的电压将依据分压器的公式而变化。假如您想了解更多相关分压器工作原理以及怎么样计算ADC引脚接管电压值的信息,那么您能够运用此分压器计算器页面。
除此之外,所有连接都是直接连接,LCD连接到引脚8,9,10,11和1二.蜂鸣器连接到引脚7,SPDT开关连接到Arduino的引脚6。整个项目通过笔记本电脑的USB端口供电。您也能够通过DC插孔将Arduino连接到9V或12V电源,项目依然能够正常工作。
了解Arduino的Tone()函数:
Arduino有一个方便的tone()函数,可用于产生变化的频次信号,可用于运用蜂鸣器产生不同的声音。因此,让我们了解该函数的工作原理以及它怎么样与Arduino一起运用。
在此之前,我们应该知道Piezo蜂鸣器的工作原理。我们可能已经在我们学校了解了压电晶体,它只不过是一种将机械振动转化为电能的晶体,反之亦然。在这里,我们应用可变电流(频次),晶体振动,从而产生声音。因此,为了使Piezo蜂鸣器产生一些噪音,我们必需使Piezo电子晶体振动,噪声的音调和音调取决于晶体振动的速度。因此,能够通过变更电流的频次来控制音调和音调。
好的,那么我们怎么样从Arduino获得可变频次?这就是tone()函数的用武之地。tone()能够在特定的引脚上产生特定的频次。假如须要,也能够提及持续时长。 tone()的语法是
Syntax
tone(pin,frequency)
tone(pin,frequency,duration)
Parameters
pin:thepinonwhichtogeneratethetone
frequency:thefrequencyofthetoneinhertz–unsignedint
duration:thedurationofthetoneinmilliseconds(optional1)–unsignedlong
引脚的值能够是您的任何数字引脚。我在这里运用了8号针。能够生成的频次取决于Arduino板中定时器的大小。对于UNO和大部分其他公共电路板,可产生的最小频次为31Hz,可产生的最大频次为65535Hz。然而,我们人类只能听到2000Hz到5000Hz之间的频次。
在Arduino上演奏钢琴音调:
好吧,在我初始探讨这个主题之前,让我明确表示我是一个有音符或钢琴的新手,所以假如本标题下提到的任何内容都是胡言乱语,请原谅我。
我们此时知道我们能够运用Arduino中的音调功能来产生一些声音,但是我们怎么样运用相同的音调播放特定音符的音调。侥幸的是,我们有一个名为“pitches.h”的图书馆,由Brett Hagman编写。该库包括相关哪个频次等效于钢琴上的哪个音符的所有信息。我很惊讶这个图书馆现实中上能够怎么样运作并且简直能够播放钢琴上的每一个音符,我运用同样的方式演奏加勒比海盗,疯狂青蛙,马里奥甚至泰坦尼克号的钢琴音符,它们听起来很棒。哎呀!我们在这里有点偏离主题,所以假如你对运用Arduino项目播放旋律的感兴趣。您还能够在该项目中找得到相关pitches.h库的更多证明。
我们的项目独有8个按钮,因此每个按钮只能播放一个特定的音符,因此我们只能播放8个音符。我在钢琴上选择了最常用的音符,但是你能够选择任何8或甚至用更多按钮扩展项目并添加更多音符。
在此项目中选择的音符是音符C4,D4,E4,F4,G4,A4,B4和C5,它们分别能够运用按钮1至8播放。
想要学习单片机的朋友 ,做毕业设计的同学,关注我们,回复陈老师,与导师一起学习成长,共同进步,还有更多资料领取。
说了这么多,大家记得留意下方评论第一条(或者私信我)有干货~
-END-
*本文系网络转载,版权归原作者所有,如有侵权请联系删除