PWM - 通過蜂鳴器播放音樂

材料準備

範例說明

介紹

聲音的組成包括音量、音調與音色。音量為聲波的振幅,音調為聲波的頻率,音色則是由聲波的波形決定。

這個範例裡我們使用PWM控制蜂鳴器發出想要的音調。 PWM輸出的是方波,當我們想要發出中央C(C4)的聲音時,C4的頻率是262Hz,每個波的長度是 1/262 = 3.8ms,所以波形如下:

1

所以我們只要讓PWM送出不同的頻率,就可以讓蜂鳴器發出音樂
接著我們將蜂鳴器接上要發出訊號的PWM引腳:

流程

“Examples” -> “AmebaAnalog” -> “TonePlayMelody”
編譯並上傳完成之後, 按下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%的停頓時間。