以前、micro:bit(マイクロビット)で同じようなものを作ったのですが、今回はArduinoでテルミンっぽいものを作ってみました。
micro:bitテルミンの記事はこちら。
https://ameblo.jp/gameprograming/entry-12534483584.html
本物のテルミンは、静電容量の変化によって音の高さ(周波数)と音の大きさを変化させるそうですが、今回は明るさに応じて音の高さを変えていきます。
明るさを検出する素子として、CdSセルを使います。
CdSセルは、明るさに応じて抵抗値が変わる素子です。
これを使って、Arduinoへの入力値を変化させていきます。
入力に応じた出力をスピーカーに出していくのですが、ここではtone()関数を使います。
analogWrite()では周波数固定でデューティー比を変化させるのですが、tone()ではデューティー比は50%固定で周波数を変化させます。
まずは回路を作っていきます。
部品は少なめです。
Pin8に繋げている抵抗は、スピーカーの音がうるさかったので入れました。
動作確認だけなら不要ですが、あまりうるさい音を出せない人はここに抵抗を入れたほうが良いかも。
この抵抗をCdSセルに変更することで、音の大きさも明るさに応じて変化させることができます。
接続した様子はこんな感じです。
右下の小さい素子がCdSセルです。
今回の主役。
プログラムは下記のようにしました。
はじめの5秒間で、CdSセルから値を読み込んで、最小値と最大値を読み取ります。
この間、CdSセルの上で手を動かしていきます。
map()では、センサ入力を最大値と最小値が50から4000(Hz)のレンジになるよう変換しています。
詳しい説明はこちらに書いてくれていましたので、興味のある方はぜひ。
Arduino 日本語リファレンス
http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=2743
tone()で、その変換された周波数(50~4000Hz)が出力されます。
それでは、最後に動作確認の結果をみてください!
結構反応が良くて楽しくなりました。
部品点数も少なく、簡単に作れるのも良いですね。
「音を楽しむ」と書いて音楽。
是非楽しんでみてください!