用Micro:bit和造物粒子设计触摸钢琴
2018-07-12薛金谢作如
薛金 谢作如
学科关键词:音乐、数学、技术
钢琴作为西方古典音乐的乐器之王,初次出现是在十八世纪初期,经历了半个世纪的发展攀升到达音乐界的巅峰,莫扎特、勃拉姆斯、李斯特也先后投入了钢琴的怀抱。用开源硬件制作一台触摸钢琴,用电子科技对音乐艺术重新进行诠释,不仅有趣,还具有一定的挑战性,这既可以让学习者将硬件知识融会贯通,也可以锻炼其逻辑技巧,更可以让其体验钢琴演奏的乐趣。
原理分析
那如何制作一台触摸钢琴呢?制作触摸钢琴首先需要设计琴键及可以发声的装置,通过触摸不同的琴键,可以发出不同的音符。
触摸开关是人体或金属触碰后会被感应到的装置,其连接主控板,可以传递信号给主控板,再传递信号给发声装置。喇叭模块作为发声装置,接收到主控板传递的信号,发出不同的声音。由于Micro:bit与Arduino相比较,有较多的优势,故使用Micro:bit作为主控板。Micro:bit从其本质来说是一台信用卡大小的微型电脑,虽仅有信用卡的一半大小,但却搭载了5×5可编程LED点阵,两个可编程按键,如加速度计、电子罗盘、温度计、蓝牙等电子模块。从软件的角度来说,Micro:bit是由英国广播电视公司(BBC)专为青少年编程教育而设计的,通过在线的模块化编程环境,不仅避免了形形色色的驱动安装问题,同时也大大降低了使用者的编程门槛。触摸钢琴的原理逻辑图如图1所示。
原型设计
通过人体接触触摸开关传递信号至Micro:bit主板,Micro:bit主板控制喇叭模块发出相应频率的声音。Micro:bit自身仅仅引出了三个引脚,肯定不够使用,需要使用扩展板。目前,评价较高的扩展板是DFrobot出品的Micro:bit Boson扩展板(如图2),不仅扩展出六个引脚,还增加了音频接口,让接音箱喇叭等声音模块更加方便。但这六个引脚中P0要连接喇叭模块用于播放声音,剩下的五个引脚分别做触发开关,则仅仅可以制作五音钢琴。
能否利用五个引脚做七个音阶的钢琴?当然可以了,只要了解译码器原理就能解决。译码器是用来表示变量状态的组合逻辑电路,它是一种二进制译码器,输入输出代码之间的关系可由真值表表示。N个输入代码有2的n次方个输入状态,故对应2的n次方组输出状态。针对Micro:bit扩展板连接引脚来说,原本两个引脚可以连接两个触摸开关,形成两种输出组合,如果运用译码器原理,两个引脚比作两个二进制数位,则会有11、01、10三种输入组合(默认00的组合为不发声状态,不计其中),可对应三种输出情况,故原来的两个引脚控制两个音频,可升级为两个引脚控制三个音频。这样原本仅有的五个引脚至少就可以制作成七个音阶的钢琴。两个引脚设计原理如图3所示。
硬件连接之前,对硬件连接进行分析,触摸开关属于输入模块,将外界的信号传递至内部线路之中,可以通过触摸开关被触摸发出信号控制喇叭模块发出不同的响声。在连接的过程中,信号是从输入模块流向输出模块,“逻辑或”模块(简称或模块)和分支模块需根据流向箭头进行连接。或模块和分支模块都是DF造物粒子套件中的基本模块,结合原理分析,设计线路原理图如图4所示。
在连接的过程中,会使用到分支模块和或模块,以P16和P12两个引脚为例进一步分析如何运用三个触摸开关通过两个引脚来实现控制。假设当有信号传递时,信号输入为1,那么两个引脚输入情况一共有三种状态:P16为1、P12为0;P16为1、P12为1;P16为0、P12为1(均为0的状态不计,为未使用的)。当触摸开关1被接触时,或模块可以给P16传递信号,P12没有接收到信号,则是P16为1、P12为0的情况;当触摸开关2被接触时,或模块可以给P16传递信号,另一个或模块给P12传递信号,则是P16为1、P12为1的情况;触摸开关3被接觸时,P16没有接收到信号,另一个或模块给P16传递信号,则是P16为0、P12为1的情况,余下的触摸开关接线原理相同。
制作七音触摸钢琴需要七个触摸开关作为琴键,此外还需要喇叭模块、连接线等硬件。具体硬件清单如下页表。
编程控制
运用Makecode在线网站进行程序编写,网址为:http://microbit.dfrobot.com.cn/index.html。触摸钢琴程序设计部分,看似较为复杂,但每个触摸开关对应的原理基本相同。以触摸开关1为例进行分析:硬件实现部分已经说明当触摸开关1被接触时,是P16为1、P12为0的情况,代码部分可以表述为当数字读取引脚P16的值为1同时数字读取引脚P12的值为0时,播放音符do的音,并将音符声延长100ms,使听到的音符更加完整。触摸开关1的代码设计如上页图5所示。
将每个触摸开关依照此原理进行程序编写,具体代码设计如上页图6所示。
效果展示
完成触摸钢琴的硬件部分设计及软件部分的设计,触摸钢琴已经基本成型。当触摸开关1被触摸时,喇叭模块发出do音;当触摸开关2被触摸时,喇叭模块发出re音;当触摸开关3被触摸时,喇叭模块发出mi音。以此类推,不同的开关可以发出不同的音符。触摸钢琴的代码已烧录至Micro:bit主板,此时连接电脑的数据线仅起到供电的作用,可通过vin口连接充电宝为触摸钢琴供电。制作实物如图7所示。
制作完成触摸钢琴后,体验过程中笔者发现,触摸钢琴的琴键较为凌乱,影响弹奏效果,故对触摸钢琴的外观进行改造,改造效果如图8所示。
小結
触摸钢琴项目融合了音乐、数学、技术等学科知识,能够让学生在设计制作中学习并掌握更多的硬件知识和软件知识。更重要的是,在Arduino、Micro:bit之类的开源硬件的支持下,技术门槛在不断下降,很多灵感一现的创意都有“物化”的可能。学生通过设计、制作完成一个实实在在的作品,这对他们来说是一件最快乐不过的事情了。