PWM - 蜂鸣器播放旋律

材料准备

范例说明

声音的组成包括音量、音调与音色。音量为声波的振幅,音调为声波的频率,音色则是由声波的波形决定。

这个范例里我们使用PWM控制蜂鸣器发出想要的音调。 PWM输出的是方波,当我们想要发出中央C(C4)的声音时,C4的频率是262Hz,每个波的长度是 1/262 = 3.8ms,所以波形如下:

1

所以我们只要让PWM送出不同的频率,就可以让蜂鸣器发出音乐
接着我们将蜂鸣器接上要发出讯号的PWM pin脚:

AMB82 MINI 接线图:

2

“Examples” -> “AmebaAnalog” -> “PWM_BuzzerPlayMelody”
编译并上传完成之后, 按下Reset按钮, Ameba就会播出 ”妹妹背着洋娃娃” 的音乐。

Code Reference

Ameba实作了跟 Arduino一样的tone()与noTone() API:
https://www.arduino.cc/en/Reference/Tone
https://www.arduino.cc/en/Reference/NoTone
程式码里我们宣告melody的阵列, 里面摆要发出的音调, 另外宣告noteDurations的阵列, 里面放每个音调的长度, 4代表4分音符, 8代表8分音符,4分音符的长度是3000ms/ 4 = 750ms, 另外加上30%的停顿时间。
请先确认已安装QQ通讯软体