第14回 IoT×プログラミング教育
感圧センサーで楽器を作ります。
感圧センサーの触る位置によって音の高さを変え、音楽を奏でる予定です。
接触位置センサーを使う
感圧センサーにもいろいろあるのですが、今回はたまたま手元にある「SoftPot接触位置センサ100mm」を使います。
押す位置で抵抗が変わるセンサー、つまり押す位置を数値化できるので、楽器制作と相性が抜群と思われます。
さっそく回路を組み立てましょう。
ジャンパーワイヤーのオス-メスを持っていれば、接触位置センサーの取り付けは簡単です。
押した位置を音に変えるプログラム
単純です。
接触位置センサーのAnalog入力値(0~1023)を、tone()の第2引数に入れるだけです。
#define PIN 10 int val = 0; void setup(){ pinMode(PIN, OUTPUT); Serial.begin(9600); } void loop(){ val=analogRead(0); Serial.println(val); if(val > 10){ tone(PIN,val,100); } delay(100); }
接触位置センサーは、触れてないときAnalog入力値は0となります。
一応、10以下の時は触れてないと判定し、10より大きい場合は音を出すようにしています。
また、音感に自信がない私は、シリアルモニタでAnalog入力値を確認できるようにしています。
基準の「ド」が262となり、この接触位置センサーが100mmなので、だいたい4分の1くらいの25.6mm (100mm × 262 ÷ 1024)の位置が、基準の「ド」なのでしょう。
楽器を演奏してみよう
鍵盤を書けば、もっと楽器らしいですが、まずは試しに演奏します。
・・・。
思惑通り、押す位置によって音の高さは変わりますが、音の高さの調整が難しいです。
「ドレミ」がひけない。
「かえるのうた」すらひけない。
子供たちも頑張って演奏(?)してくれました。
これで遊んでいると、音痴になりそうです。
多分、250から270の間は、262(ド)を出すというように、しっかり鍵盤を意識してプログラミングをしなければ、いけなかったのでしょう。
あと、音も安定して流れていないので、その調整も必要そうです。
まだまだ楽器と呼べるものを作るには、道のりが長い気がしました。
貴重な情報ありがとうございます。抵抗器は何オームのものですか?ちょっとカラーコードを初心者なので、なかなか読めません。スピーカーは、キット等についている、arduino、arduino互換機用の一般的なものでよいのでしょうか?
私も初心者のようなもので自信はありませんが、カラーコード:茶黒橙金で、10KΩを使っていました。
スピーカーは、arduino、arduino互換機用であれば、使えると思います。
すぐに返信してくださりありがとうございます。参考にしてやってみます。arduinoを楽器化する本があったのですが、絶版状態で手に入りにくいので、大変参考になります。ありがとうございます。