PWM - 让Ameba播音乐
材料准备
- Ameba x 1
- 蜂鸣器 x 1
范例说明
声音的组成包括音量、音调与音色。音量为声波的振幅,音调为声波的频率,音色则是由声波的波形决定。
这个范例里我们使用PWM控制蜂鸣器发出想要的音调。 PWM输出的是方波,当我们想要发出中央C(C4)的声音时,C4的频率是262Hz,每个波的长度是 1/262 = 3.8ms,所以波形如下:
所以我们只要让PWM送出不同的频率,就可以让蜂鸣器发出音乐
接着我们将蜂鸣器接上要发出讯号的PWM pin脚:
所以我们只要让PWM送出不同的频率,就可以让蜂鸣器发出音乐
接着我们将蜂鸣器接上要发出讯号的PWM pin脚:
RTL8710 的接线图如下:
“Examples” -> “AmebaAnalog” -> “TonePlayMelody”
编译并上传完成之后, 按下Reset按钮, Ameba就会播出 ”妹妹背着洋娃娃” 的音乐。
程式码说明
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%的停顿时间。
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%的停顿时间。
Copyrights ©瑞晟微电子(苏州)有限公司 2021. All rights reserved. 使用条款