在〈mBlock & Arduino(5)可变电阻、ADC 与节拍器〉中,我们利用 mBlock 中的“弹奏鼓声…”方块来发声,这样的话,你的 Arduino 就得一直连接着电脑,这个节拍器才能使用,如果要能够不连接电脑(之后会介绍),那么 Arduino 上就得有自己的发声器,像是蜂鸣器。
使用蜂鸣器
声音基本上来自振动,蜂鸣器基本上可分为压电式与电磁式。
压电式蜂鸣器使用压电材料,这类具有压电效应,简单来说,就是被施以压力时会产生电荷,将机械能转换为电能,这称之为“正压电效应”,如果对压电材料施以电场,材料会产生形变,将电能转换为机械能,这称之为“逆压电效应”,压电式蜂鸣器透过对压电材料外加电压的大小、频率等控制,来达到震动的效果,因而能产生声音。电磁式蜂鸣器则是利用电磁方式,透过通电与否将金属膜吸下或放开来达到振动的效果。
知道蜂鸣器的基本原理,就可以自己写个小程式来发声了,接脚有正负之分,你可以如下衔接电路(其实就只要连接正负极就可以了,够简单吧!):
如上图连接的话,透过简单地让脚位 D7 在高低电位间切换,就可以听到蜂鸣器发出声音了:
“播放脚位…”方块
当然,因为受到“等待”方块的限制,这样实际上能发出的频率有限,在 mBlock 的机器人模块中,其实有个“播放脚位…”方块:
这个方块可以指定哪个数位脚位以指定频率、节拍数驱动蜂鸣器,相当于使用 Arduino 官方语言时,可呼叫的tone函式,只不过,在这边频率的设定,直接使用音阶名称 C2 到 D8 的下拉选单,省去你查询音阶对应的频率,如果你只要是播放几个音阶的话,使用这个是还蛮简单的,只不过,如果你想自行输入频率的话,就没办法了,想做个简单的电子琴或歌曲播放,也会麻烦许多,就像 mBlock 内建的“音乐演奏”范例就落落长:
你可以直接开启范例执行看看,听听看蜂鸣器的效果。真的要做比较有弹性的歌曲播放,或者是电子琴也不是不行,就是要对“播放脚位…”方块做点封装,有兴趣可以自己试试 … XD
(mBlock 2.1 之后,“播放脚位…”方块就可以使用下拉选单或自行指定数值了,这样就有弹性的多了。)
使用蜂鸣器来打节拍
使用“播放脚位…”方块来为〈mBlock & Arduino(5)可变电阻、ADC 与节拍器〉中的节拍器打节拍,程式上撰写倒是还蛮简单的,你可以先如下连接电路:
修改一下〈mBlock & Arduino(5)可变电阻、ADC 与节拍器〉的节拍器程式,如果将来打算可以让 Arduino 可以不连接电脑执行程式,与桌面环境中资源控制的方块要移除,像是控制猫咪的相关方块:
接着试着执行看看程式吧!看看效果如何!
感谢CodeData用户:caterpillar的贡献 著作权归作者所有
整理:宁波家电物联网云平台,中科极动云