RaspberryPi ZeroのPWMやってみる

家で過去買った部品物色してたら、PCからもぎ取ったブザー発見(KC-1206)
型番調べると、パッシブブザーらしいのでラズパイのPWMで音階奏でてみました。
回路?良く分からんのと、ソケットがPWM1(33PIN)、GND(39PIN)で丁度いいので
そのままぶっ刺しました。

色々難ありですが、目で見るより音聞いた方が効果わかりやすいですね。

ソースはこちら。

#
import RPi.GPIO as GPIO
import time

C4 = 261.626
D4 = 293.665
E4 = 329.628
F4 = 349.228
G4 = 391.995
A4 = 440.000
B4 = 493.883
C5 = C4 * 2
D5 = D4 * 2

TEMPO = 70

T4 = 60 / TEMPO
T2 = T4 * 2
T8 = T4 / 2
T6 = T4 + T8

melody = [ D4,C4,D4,E4, G4,E4,D4,    E4,G4,A4,G4,A4, D5,B4,A4,G4,
           E4,G4,A4,    D5,C5,D5,    E4,G4,A4,G4,    E4,G4,D4,
           A4,C5,D5,    C5,D5,A4,G4, A4,G4,E4,D4,
]
tempo  = [ T4,T4,T4,T4, T4,T4,T2,    T4,T4,T4,T8,T8, T4,T4,T4,T4,
           T4,T4,T2,    T4,T4,T2,    T4,T4,T4,T4,    T6,T8,T2,
           T4,T4,T2,    T4,T4,T4,T4, T4,T8,T8,T2,
]

print("start")

PWM_PIN = 33    # PWM0 12 or 32 / PWM1 33

GPIO.setmode(GPIO.BOARD)
GPIO.setup (PWM_PIN,GPIO.OUT)
GPIO.output(PWM_PIN,GPIO.LOW)

pwm = GPIO.PWM(PWM_PIN,melody[0])
pwm.start(50)
#pwm.ChangeDutyCycle(50)
for i in range(len(melody)):
    pwm.ChangeFrequency(melody[i]) 
    time.sleep(tempo[i])

pwm.stop()
GPIO.cleanup()
print("end")
#EOF

コメント

タイトルとURLをコピーしました