13
2

はじめに

Nerves Livebook で Raspberry Pi 用スターター電子工作キットを楽しんでいます

SunFounder Raspberry Pi 用のスターター電子工作キット

これまでの記事

この記事ではアクティブブザーを鳴らします

また、必要なモジュールを追加するため、 Nerves Livebook をカスタマイズします

実装したノートブックはこちら

パッシブブザー

与えられた電気の周波数によって音程が変化します

IMG_1622.JPG

回路の組み立て

オンライン説明書の通りに回路を組みます

Nerves Livebook のカスタマイズ

Raspberry Pi 4 を使っている場合、音階 = 周波数を操作する必要があるため、 PWM を実行する必要があります

以下の記事に従って、 PWM を実行するための Pigpiox を Nerves Livebook に追加してください

Raspberry Pi 0 〜 3 の場合は改造する必要がありません

ノートブックの実装

Nerves Livebook を開き、以降のコードを実行していきます

使用するピン

Raspberry Pi 4 では GPIO12 と GPIO13 が PWM に対応しているようです

今回は GPIO12 を使います

ブザーを鳴らす

まずは特定の周波数(音階)で音を鳴らしてみます

Pigpiox.Pwm.hardware_pwm の引数は以下の通りです

  • ピンの番号
  • 周波数
  • デューティー比(0 〜 1,000,000)

デューティー比を 1000_000 にしたときが 100% 出力で、 500_000 を指定すれば 50% 出力になります

デューティー比によって音量が調節できます

gpio = 12
# 50%
Pigpiox.Pwm.hardware_pwm(gpio, 440, 500_000)

デューティー比を 0 にしたときが 0% 出力なので、音が止まります

# 0%
Pigpiox.Pwm.hardware_pwm(gpio, 440, 0)

音階を鳴らす

3 オクターブ分のドレミファソラシに対応した周波数を用意します

codes = [
  131,
  147,
  165,
  175,
  196,
  211,
  248,
  262,
  294,
  330,
  350,
  393,
  441,
  495,
  525,
  589,
  661,
  700,
  786,
  882,
  990
]

scales に何番目の音階を鳴らすかを指定します

scales = [7, 8, 9, 10, 11, 12, 13, 14]

beats に各音の長さ(八分音符何個分伸ばすか)を指定します

beats = [1, 1, 1, 1, 1, 1, 1, 1]

以下のコードを実行すると、ドレミファソラシドが演奏できます

scales
|> Enum.zip(beats)
|> Enum.map(fn {code_index, beat} ->
  code = Enum.at(codes, code_index)
  Pigpiox.Pwm.hardware_pwm(gpio, code, 500_000)
  Process.sleep(beat * 500)
end)

Pigpiox.Pwm.hardware_pwm(gpio, 440, 0)

ドレミの歌を演奏する

演奏を関数化し、任意の音階、リズムで演奏できるようにします

play = fn gpio, scales, beats ->
  scales
  |> Enum.zip(beats)
  |> Enum.map(fn {code_index, beat} ->
    code = Enum.at(codes, code_index)
    Pigpiox.Pwm.hardware_pwm(gpio, code, 500_000)
    Process.sleep(beat * 250)
  end)

  Pigpiox.Pwm.hardware_pwm(gpio, 440, 0)
end

以下のコードを実行すると、ドレミの歌の冒頭部分が演奏されます

scales = [7, 8, 9, 7, 9, 7, 9, 8, 9, 10, 10, 9, 8, 10]
beats = [2, 1, 2, 1, 2, 2, 4, 2, 1, 1, 1, 1, 1, 8]
play.(gpio, scales, beats)

まとめ

パッシブブザーを使うことで、メロディーを奏でることができました

また、 Nerves Livebook をカスタマイズすることもできたため、これから色々応用できそうです

13
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
2