本节书摘来自异步社区《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. 转帖DataTable批量插入数据库
  3. JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
  4. 技术资料,老吴的博客 很好的 技术博客 里面有很多资料 书籍或者软件安装包...
  5. Java注释:类、方法和字段注释
  6. Oracle收购Sun
  7. form-create教程:给内置组件和自定义组件添加事件
  8. Hive的UDF是什么?
  9. 前端程序员总结的工作中常用的十大浏览器兼容性问题,初学者瑰宝!
  10. 被劝退的准中年人日记——劝退后第一天
  11. 【STM32】 色环电阻
  12. DroidCam使用安卓手机当电脑摄像头
  13. 图文详解超五类网线的接法
  14. 【腾讯开源项目】一个开放式的开发平台,蓝鲸PaaS平台源码对外开放
  15. html网页早发白帝城,早发白帝城古诗
  16. Excel使用公式截取字符串
  17. 跨境电商选品策略和思路—扬帆牧哲
  18. 从你的全世界路过---陌陌X-SIGN还原
  19. P,AP, MAP,MRR。几种分类器评价指标
  20. 集成平台、大数据平台、数据治理平台,医院信息科应该怎么选?

热门文章

  1. JSON串转化为List
  2. 请用一句话证明你是产品经理
  3. 《UNIX环境高级编程》笔记 第十三章-守护进程
  4. 100天精通Python丨黑科技篇 —— 23、千图成像,爱心加倍(程序员的浪漫)
  5. 在控制台使用js获取cookie信息
  6. 01--Spring
  7. java代码实现冒泡排序
  8. 电脑和手机之间的通讯(一)
  9. xmind2020中文版(思维导图) v10.3.0
  10. linux中vi和退出 简单操作