本节书摘来自异步社区《Arduino实战》一书中的第3章,第3.3节,作者 【美】Martin Evans , Joshua Noble , Jordan Hochenbaum ,译者 况琪,更多章节内容可以访问云栖社区“异步社区”公众号查看。

3.3 制作一架五声音阶电子琴

五声音阶,英文pentatonic,它由penta(意思是“五”)和tonic(意思是“音阶”)组成。五声音阶每个八度由5个音符组成,与之相比,七声音阶每个八度则由7个音符组成。五声音阶在世界范围内广为流传并在不同类型和风格的音乐中得以应用,其中包括布鲁斯音乐、凯尔特音乐、爵士乐和古希腊音乐1。五声音阶是儿童音乐入门的理想选择。它的简单性和易用性,使其很容易快速创作出可辨认的曲调,因此许多儿歌都是基于五声音阶的。

下面就要来搭建本章的最后一个项目了,你要向电路中再添加另外4个压电换能器,这总共5个压电换能器将用做5个琴键。敲不同的键时,扬声器就会产生不同的音阶,也就是不同的音符——这就是一架五声音阶电子琴。

3.3.1 电路图

每个新加的压电换能器都需要并联一个1 MΩ电阻和一个稳压二极管,正如你使用的第一个压电换能器一样。完整的电路图如图3-15所示。添加这些元件后它显得有点复杂,但只是把图3-9中的电路重复了几次而已。

电路图中有5个压电换能器,每个都与一个电阻和一个二极管并联。使用模拟输入引脚A0~A4作为Arduino的输入。

现在就可以把硬件连接到一起了。

3.3.2 连接硬件

将额外的压电换能器、电阻和二极管添加到面包板上。要特别注意压电换能器和稳压二极管的方向。如图3-16所示,可以使用面包板上的一个横条作为公共的地线。

在面包板上完成所有元件的组装之后,最好再检查一下每个压电换能器是否已经正确连接。可以将代码清单3-3中的程序写入到Arduino,然后敲击连接到模拟输入端A0的换能器,看扬声器是否能发出声音。如果没有发出声音,请再次确认所有的连接都正确,在面包板上很容易将元件插入错误的孔中,因为现在面包板拥挤了许多。还要检查一下稳压二极管的方向和压电换能器的极性。

当一切都工作正常后,你可以每次对程序做一点小修改,来测试下一个换能器。修改程序最顶部的传感器引脚的值,将sensorPin = 0改成sensorPin = 1。

将修改过的程序写入到Arduino,即可测试连接到模拟输入端A1的压电换能器。当这个压电换能器受到敲击时,扬声器应会发声。

重复这个过程,通过每次修改sensorPin的值来测试另外3个换能器。一旦所有的压电换能器都通过了测试,你就可以开始编写五声音阶电子琴的程序了。

3.3.3 制作一架五声音阶电子琴的程序

下列代码清单给出了五声音阶电子琴的程序。你可以在原有代码的基础上修改,也可以创建一个新的程序然后输入以下代码。

代码清单3-4 五声音阶电子琴程序

这个程序将音符的频率装入了音阶数组,这些音阶基于五声音阶的中央C大调。

  • C=262 Hz
  • D=294 Hz
  • E=330 Hz
  • G=392 Hz
  • A=440 Hz

主循环轮流测试每个模拟输入端的值。当检测到一个压电换能器受到敲击,并且强度超过了阈值时,相应的音阶就会通过扬声器播放10 ms。

注意 在这个程序中,阈值被设定为50。之前使用的值是200,但我们发现在实际测试中,有一个压电换能器需要比其他的敲得更用力些才行,所以我们将阈值降到了50,让这些琴键变得更灵敏一些。

所有的代码都输入完成后,用一个好记的名字将它保存。接下来就要烧写程序并测试五声音阶电子琴了。你甚至可能会想用它弹奏几个曲子。

3.3.4 烧写和测试

校验这个程序使其通过编译。完成后,将Arduino连接到你的计算机为其写入程序。现在,可以通过敲击每个换能器来测试是否一切正常,要确保每个琴键都能发出一个不同的声音。尝试弹奏几个简单的曲子。它的声音可能会有点走调,因为只使用了一个小型的扬声器,但你确实制作了自己的电子琴。

还可通过修改装载到音阶数组中的频率值来改变这些音符。你可以尝试用下列数值来演奏五声音阶的C小调。

  • C=262 Hz
  • E=311 Hz
  • F=349 Hz
  • G=392 Hz
  • B=466 Hz

通过为音阶数组装载不同的频率值,可以创作出各种不同的声音和曲调。

现在最重要的事情是玩得开心和炫耀你的新创造了。使用五声音阶的大调,尝试演奏下列旋律。

看看你能否辨别出这些曲调,如果能让别人也辨别出来,那就更好了。

1.GGAGCB GGAGDC——提示:每个人每年都会听到。

2.CDECCDEC EFG EFG——歌曲French brother2。

3.CCGGAAG FFEEDC——歌曲Heavenly3。

现在可以尝试自己创作一些旋律。使用五声音阶的好处之一就是相对容易创作出一些悦耳的旋律。

《Arduino实战》——3.3 制作一架五声音阶电子琴相关推荐

  1. 【Lesson 7】名族音乐理论 - 五音 (五声音阶)

    一.名族音乐理论基础 在中国名族音乐理论中把 宫.商.角.徵.羽 叫正音 比正音高半音叫"清",相当于 ♯ (升记号) 比正音低半音叫"变",相当于 ♭ (降记 ...

  2. 【Lesson 12】中古风五声音阶——和弦使用技巧

    一.保留根音 保留根音这种手法在很多流行音乐中有应用. 保留根音: 意思是在一段和弦连接里,根音不按照正常和弦根音走动而是一直持续在一个音上保持不动,使和弦进行"粘合在一起",最常 ...

  3. 《Arduino实战》——第1章 你好Arduino

    本节书摘来异步社区<Arduino实战>一书中的第1章,作者:[美]Martin Evans ,Joshua Noble ,Jordan Hochenbaum,更多章节内容可以访问云栖社区 ...

  4. Netty实战 IM即时通讯系统(五)客户端启动流程

    ## Netty实战 IM即时通讯系统(五)客户端启动流程 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 实战: 客户端和服务端双向通信 数据传输载体ByteBuf ...

  5. excel表中怎么插入visio_快速制作组织架构图,还在用Visio就out了,Excel简单三步搞定...

    工作中相信绝大多数人都见过一种图表类型,那就是组织架构图.组织架构图经常用于企业内部部门结构.人员编制分工的展示.通过组织架构图,我们能够清晰的查看到各部门人员结构.业务等情况. 如上图所示,我们需要 ...

  6. 《Arduino实战》——1.7 为代码编写注释

    本节书摘来自异步社区<Arduino实战>一书中的第1章,第1.7节,作者 [美]Martin Evans , Joshua Noble , Jordan Hochenbaum ,译者 况 ...

  7. 为ibus输入法框架制作新世纪五笔码表

    本文记录了笔者在ubuntu 16.04系统上为ibus输入法框架制作新世纪五笔码表的过程,有需要的可以参考一下. 首先,安装ibus输入法框架:     sudo apt install ibus- ...

  8. Arduino 用声音传感器制作简单的“声纹锁”

    Arduino 用声音传感器制作简单的"声纹锁" 前言 之前就一直在想如何用Arduino制作一个门锁,简单廉价,又可以很方便的开门,最后想了一个办法,就是使用一个声音传感器,制作 ...

  9. Python实战——1_1.网页制作

    Python实战--1_1.网页制作 引言 网页的组成部分: CSS样式 - 给结构以装饰 Html - 结构部分 JavaScript- 功能实现 代码部分 第一部分为网站的基本结构(在IDE中新建 ...

最新文章

  1. 配置多路由的静态路由
  2. AJAX初探,XMLHttpRequest介绍
  3. 标定板标定和九点标定的区别_射频导纳物位计的标定方法
  4. TCP/UDP 网络编程实例
  5. 行内元素与块级元素,以及区别
  6. 开源软件软件著作权执照详细研究和实例分析
  7. Markdown标题、行首缩进、换行。csdn(1)
  8. 【MapReduce】MapReduce工作机制
  9. ld.so.conf.d配置文件
  10. 计算机管理无法输入密码,光大网银控件已安装但无法输入密码
  11. Vue开发环境搭建 VsCode
  12. (web前端每日一练)用JS制作一个能够在桌面运行的倒计时插件
  13. 电路元件伏安特性的测量与multisim仿真(附工程文件)
  14. npp夜光数据介绍 viirs_对 VIIRS/NPP 夜光数据的解读
  15. laravel 生成二维码
  16. 边打游戏边学编程,是一种怎样的体验?
  17. 互联网日报 | 1月12日 星期二 | 百度宣布组建智能汽车公司;京东成立京东科技子集团;QQ兴趣部落即将全面停运下线...
  18. linux命令下载电影,linux命令行---用wget下载电影
  19. 麻省理工数学与计算机科学,哈佛和麻省理工学院数学专业哪个更好一点?
  20. BugKu--------你必须让他停下

热门文章

  1. PDF是什么意思?可以打印吗
  2. iphone11pro市场价_iPhone11 Pro正式发布,售价感人,网友:还是买不起!
  3. Java将字符串按照指定长度分割成字符串数组
  4. 解决RichEdit line insertion error的方法
  5. java split函数的用法,java拆分字符串_java中split拆分字符串函数用法
  6. 数据结构-严蔚敏视屏讲解
  7. Windows 10 Mobile Build 10586.71已现身微软服务器
  8. Algorithm 鸡蛋的硬度问题
  9. Excel 2010 VBA 入门 036 替换所有的错误值
  10. vue修改浏览器小图标