M2-5 サウンドステッキ





【解説】
「冷蔵庫の見張りばんエコビット」のプログラムを覚えていますか。冷蔵庫の中の光の量を測定し、一定量以上の光を観測すると音楽が鳴り始めるしくみを作りました。





今回もまた光の量を測定して出力に変えます。

光の量を計ってそれを何かしらの出力に変えるのですが、前回のような音楽ではなく、音を出力します。光の入力を音の出力に変えるのです。音には大きさと高さがありますね。そのどちらも調節します。明るければ明るいほど、大きな音、高い音が出る仕組みを作ります。

作るプログラムは次のとおりです。


1,まず、明るさをしらべて値を取っておくための変数を用意します。光を「音の大きさ」と「音の高さ」に変えるので、変数の名前を「音の大きさ」と「音の高さ」にします。


2,次に数値をマップします。光の測定の範囲を覚えていますか? 0から255の範囲で測定されるのでしたね。暗ければ0,すごく明るいと255。冷蔵庫の中で音楽が鳴り始めるのは10より大きな値の時でした。それに対して、音の大きさは0〜1023の範囲で表されます。音の大きさを0から255だけで表すと、あまり音の変化が感じられません。小さな音から大きな音まで出すためには明るさの範囲を音の大きさの範囲に広げておく必要があります。

同じことは音の高さにも言えます。音の高さは波で表し、波の幅が小さいと高い音、大きいと低い音になります。人間が聞き取れる音は50マイクロ秒〜50000マイクロ秒の幅の波だと言われているので、明るさの値も音の高さの範囲に広げておく必要があります。


次の図は光の量を音の高さにマップするイメージです。上の線が光の値。下の線が音の高さに合わせて広げられた光の値。人間が聞き取れるいちばん低い音から高い音までがだせるようになっています。


3,音の大きさと音の高さが決まったので、今度はそれをアナログで出力するコードも入れておきます。アナログは連続、デジタルは数値など、とびとびの値と覚えておくといいです。


4,最後に、明るさをLEDの棒グラフにも表示しておきましょう。これで、明るさを音にも表示にも変換できたというわけです。



【課題】
「マップする」ブロックを使ってみよう。教科書では「明るさ」を音に変換し、その際、「マップする」ブロックを使いました。今回はその「マップする」ブロックを使って、センサーで感知した明るさなどを、音や表示に変換してみましょう。

使えるセンサーは「入力」カテゴリーに入っています。どれを使っても構いません。




それぞれのセンサーが感知する単位や値はこちらから見ることができます。
iftinyサイト

「マップする」ブロックは「入出力端子」カテゴリーに入っています。また、「マップする」ブロックのいちばん上にはマップしたい値が入ることに注意をしましょう。




作例1(教科書)
明るさと同じように磁力(じりょく)も音に変えることができます。磁力とは、磁石がまわり磁石や鉄と引き合ったり反発しあったりする力のことです。




作例2




シミュレーションをしたあと、実際にデバイスにつないでちゃんと変換できているか確認しよう。