圧電スピーカー
PWMで圧電スピーカーからドレミを鳴らします (picoruby-pwm)。
単純なオン・オフではなく、波形を出力してみましょう。波形を出力すると、LEDの明るさを変えたり、 サーボモーターを制御したり、そしてここでやるように音を鳴らしたりできます。
部品
- 圧電スピーカー(発振回路を内蔵していないもの)
回路
| 接続元 | 接続先 |
|---|---|
| GPIO2 | 圧電スピーカー(片方のリード) |
| 圧電スピーカー(もう片方のリード) | GND |
圧電スピーカーに極性はないので、どちらのリードをどちらに接続しても構いません。
プログラム
require 'pwm'
pwm = PWM.new(2, frequency: 330)
loop do
[261, 294, 330, 349, 392, 440, 494, 522].each do |f|
pwm.frequency(f)
pwm.duty(50)
sleep_ms(800)
pwm.duty(0)
sleep_ms(100)
end
end
picoruby-pwmを使うと、ピン番号・周波数・デューティ比を指定するだけで波形を出力できます。
配列はドレミファソラシドの周波数(Hz)です。音と音の間はデューティ比を0にして無音にしています。
実行
プログラムをpwm.rbとして保存し、デバイスの/homeに配置します
(ファイル転送を参照)。その後、シェルから実行します。
$> ./pwm.rb
スピーカーからド→レ→ミ→ファ→ソ→ラ→シ→ドと鳴り、それが繰り返されれば成功です。
このページの内容