■サウンド出力
PWM信号を使って圧電ブザーを駆動することができます。PWMの周波数が音程となります。なるべく大きな音量を出せるようにデューティ比は50%としています。
リスト5-12は400Hzの音程を1秒間出力します。
リスト11-1 tone.py
from machine import Pin, PWM
import time
MAX_DUTY = 65025.0
buz = PWM(Pin(14))
buz.freq(400)
buz.duty_u16(int(MAX_DUTY/2))
time.sleep(1)
buz.duty_u16(0)
サウンド用のPWM出力は14番ピンを使用しています。
●練習問題
「ドレミ」の音階を出力してください。
リスト11-2 doremi.py
from machine import Pin, PWM
import time
MAX_DUTY = 65025.0 # 周期内の分割数
frq = [262, 294, 330, 349, 392, 440, 494, 523]
buz = PWM(Pin(14))
buz.duty_u16(int(MAX_DUTY/2))
for i in range(8):
buz.freq(frq[i])
time.sleep(0.5)
buz.duty_u16(0)
ドレミの各音階の周波数をリスト「frq」で用意しています。周波数は正確には小数を含む値になりますが、PWMのfreqは整数しか受け付けないため四捨五入で整数値にしています。forループでそれぞれ周波数を設定し0.5秒間ずつ鳴らしています。
for i in range(N):
は、i = 0からi = N – 1まで繰り返します。
コメント