<利用したパーツ>
(秋月電子)
ブレッドボード 200円
ジャンパーワイヤ オスオスセット60本以上 220円
ジャンパーワイヤ メスメスセット10本 330円
カーボン抵抗1kΩ100本セット 100円
電子ブザー 14mm PB04-SE12HPR 100円
<接続>
GPIO18 - 1kΩ抵抗 - 電子ブザー(足の長い方)
電子ブザー(足の短い方)-Ground
(画像はRaspberry Pi本家のサイトの資料です)
<プログラム実行まで>
1.05946364はスプレッドシートで計算してみたのですが、1.059463094のほうが正確みたいです。
プログラムは2回ほど階段をあがったあと、ドレミファソラシドをならして、最後はランダム演奏します。
あとpigpioをインストールして
sudo pigpiod
(最後のdが忘れがち)
としてpigpioのデーモンを起動させておかないとエラーが発生します。
<参考文献>
Raspberry Pi3でブザーを制御
Raspberry PiのGPIO制御の決定版 pigpio を試す
音階の周波数
(秋月電子)
ブレッドボード 200円
ジャンパーワイヤ オスオスセット60本以上 220円
ジャンパーワイヤ メスメスセット10本 330円
カーボン抵抗1kΩ100本セット 100円
電子ブザー 14mm PB04-SE12HPR 100円
<接続>
GPIO18 - 1kΩ抵抗 - 電子ブザー(足の長い方)
電子ブザー(足の短い方)-Ground
(画像はRaspberry Pi本家のサイトの資料です)
<プログラム実行まで>
1.05946364はスプレッドシートで計算してみたのですが、1.059463094のほうが正確みたいです。
プログラムは2回ほど階段をあがったあと、ドレミファソラシドをならして、最後はランダム演奏します。
あとpigpioをインストールして
sudo pigpiod
(最後のdが忘れがち)
としてpigpioのデーモンを起動させておかないとエラーが発生します。
import pigpio import time import math import random BUZZER_PIN = 18 pi1 = pigpio.pi() pi1.set_mode(BUZZER_PIN, pigpio.OUTPUT) pi1.hardware_PWM(BUZZER_PIN, 0, 0) hz=[0] for i in range(120): hz+=[int(27.5*(1.05946364**i))] try: for j in range(1): for i in range(400,1000,10): pi1.hardware_PWM(BUZZER_PIN, i, 200000) time.sleep(0.01) for i in range(120): pi1.hardware_PWM(BUZZER_PIN, hz[i] ,500000) time.sleep(0.01) for i in [40,42,44,45,47,49,51,52]: pi1.hardware_PWM(BUZZER_PIN, hz[i] ,500000) print(hz[i]) time.sleep(0.1) for i in range(50): if random.randint(1,10)>=4: pi1.hardware_PWM(BUZZER_PIN, hz[random.randint(30,60)] ,500000) else: pi1.hardware_PWM(BUZZER_PIN, hz[random.randint(30,60)] ,0) time.sleep(random.randint(1,2)*0.25) except KeyboardInterrupt: pass # cleanup pi1.hardware_PWM(BUZZER_PIN, 0, 0) pi1.set_mode(BUZZER_PIN, pigpio.INPUT) pi1.stop()
<参考文献>
Raspberry Pi3でブザーを制御
Raspberry PiのGPIO制御の決定版 pigpio を試す
音階の周波数