Arduinoのtone出力で音量調整する一方法(2020/12/05音源差換え)
みゅうさんが開発されたHP 100/200LX用アラームデータ演奏プログラム playEXのMMLフォーマットでは、音量調整パラメータとして【V】が用意されており、音量大:V3, 中:V2, 小:V1, 無音:V0と設定できます。一方、Arduinoでデジタル出力ピンの周波数を設定してbeep音を鳴らすtone関数では音量調整できず、これをそのまま使っていた私の先月のプログラムでも、【V】は無視していました。
その後、アラームで時々遊んでいて、ふと音量調整する方法を思い立ちました。とは言っても大した話では無く、tone関数の出力ピンを抵抗分圧して、タップをHi-Z(ハイインピーダンス、電圧をかけても電流がほとんど流れない状態)とLOW(GND電位)に切り替えたら良いのでは、というアイデアです。
とりあえず適当な抵抗で 分圧して試してみたところ、Hi-ZはGPIOを単に入力モードにし(pinMode(hoge, INPUT); )、LOWは出力モードにしてから(pinMode(hoge, OUTPUT); ) LOWを書き込む(digitalWrite(hoge, LOW); )という手順で良さそうでした。曲の途中で切り替えると少しラグが出ますが、それは仕方ないとして抵抗値を調整した結果、次の回路でほぼ「いい感じ」になりました:

実際に鳴らしてみたものは、こちらです:
むすんでひらいて(大→小→中→大):
トルコ行進曲:
この内容を組み込んだスケッチはGitHubにアップしてあります。なお、上記2曲もスケッチに入れてあります。 以上、何かの参考になれば幸いです。 パドラッパ from MacBook Air (2017) 【2020/12/05】
当初アップしていたサンプル音源にノイズが乗っていたのを差し換えました。既に聴かれた方、申し訳ありませんでした。

実際に鳴らしてみたものは、こちらです:
むすんでひらいて(大→小→中→大):
トルコ行進曲:
この内容を組み込んだスケッチはGitHubにアップしてあります。なお、上記2曲もスケッチに入れてあります。 以上、何かの参考になれば幸いです。 パドラッパ from MacBook Air (2017) 【2020/12/05】
当初アップしていたサンプル音源にノイズが乗っていたのを差し換えました。既に聴かれた方、申し訳ありませんでした。
| 固定リンク | 0


コメント