R2P2ESP32

圧電スピーカー

PWMで圧電スピーカーからドレミを鳴らします (picoruby-pwm)。

単純なオン・オフではなく、波形を出力してみましょう。波形を出力すると、LEDの明るさを変えたり、 サーボモーターを制御したり、そしてここでやるように音を鳴らしたりできます。

部品

  • 圧電スピーカー(発振回路を内蔵していないもの)

回路

配線図: GPIO2とGNDの間に圧電スピーカーを接続
接続元 接続先
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

スピーカーからド→レ→ミ→ファ→ソ→ラ→シ→ドと鳴り、それが繰り返されれば成功です。