mBotのブザーで音楽を作ろう

mBotは、ブザーを使って、色々なメロディを作ることが出来ます。mBotのケースを外すと、mBotの右側に、ブザーがついているのが確認できます。

mCore 制御ボード 全体像

mBotで音のプログラミングをする前に、ブザーの仕組みを簡単に紹介します。「音」は、空気が振動して伝わります。

mBotのブザーの断面図

図2-1 ブザーの仕組み  出典:https://monoist.atmarkit.co.jp/mn/articles/1301/09/news004.html

その音波を受けた人の鼓膜が振動し、聴覚神経に伝わることによって、「音)」として感じ取ることが出来ます。ブザーは、コイルに電流が流れる際に、振動板が揺れ、空気の振動として伝わります。

説明の際の使用環境

・mBot_v1.1 日本国内正規品 Bluetooth版 購入時期は2019年8月
(新型Bluetoothモジュール)
・mBlock_v5.1 (ローカル版)
・オンラインのファームウェアバージョン_06.01.107
・Windows10
・アップロードモードオフ

mBotプログラミング②ドレミファソラシドを作ろう

まずは、以下の手順で、プログラムを作って、「ド」の音を鳴らしてみましょう。

1、「イベント」パレットを選び、「スペースキーが押されたとき」をドラック&ドロップ

2、「ライト・ブザー」パレットを選び、「C4の音階を0.25秒鳴らす」をドラック&ドロップ

mBlock5_ドの音を鳴らすプログラム画像

3、上のプログラムを作ったら、イベントを実行して、「ド」の音が鳴るか確認

小学校では、ドレミファソラシド・・・・と習いますが、英語では、CDEFGABC・・・になります。

また、アルファベットの横にある数字は、オクターブを表します。例えばC3を、1オクターブ上げた音が、C4です。

小学校では、音の長さは、○○分音符と習います。例えば、4分音符は、だいたい1秒ですが、正しい時間(秒)ではありません。

 

ロボットは、あいまいな時間を指示されても、どう動けばよいか、分からないので、プログラムをするとき、正しい時間の単位である「秒」でロボットに、音を鳴らす長さを伝えます。

ブザーブロックに最初に表示されている長さは、「0.25秒」ですが、音符にする場合は、だいたいの目安として、下の図を参考にしてください。

mBot_ブザーの音の長さと音符の関係図

ブザーで「ド」の音(おと)を鳴(な)らすことが出来た後は、ドレミファソラシドをプログラミングしてみましょう。

「ド」を鳴らせた時と同じ方法で、C4の下に、D4、E4・・・とブロックを繋ぎ合わせて、ドレミファソラシドがなるか確かめてみましょう。

mBlock5_ドレミファソラシドのスクリプト

 

ロボットプログラミング学習においての小数点

 小数点は、小学校3年の算数で習いますので、小学校1・2年生では難しいかも知れません。
 ただ、1秒よりも短い数字と説明して、実際にブザーを1秒鳴らした後、0.25秒鳴らせば、多くの子が、その意味を直感的に理解できるようになると思います。
 ロボットプログラミングでは、実際にロボットを動かしながら、小数の数を変えていく事で、理解が進むので、低学年でも、そこまで心配は不要です。

mBotプログラミング③ ~きらきら星の演奏~

次は、みんな知っている、「きらきら星」を演奏させてみましょう。きらきら星は、ドレミで表すと、

ドドソソララソー ファファミミレレドー

ソソファファミミレー ソソファファミミレー

ドドソソララソー ファファミミレレドー

では、以下の手順でプログラムを作ってみましょう。

1、イベントを設定する

2、「ドレミ」をCDEにあてはめてブロックをつなげていく

ドドソソララソー ファファミミレレドー
C C G G A A G
   F F E E D D C

ソソファファミミレー ソソファファミミレー

G G F F E E D       G G F F E E D

ドドソソララソー ファファミミレレドー

C C G G A A G   F F E E D D C

 

3、プログラムを実行して、「きらきら星」のメロディが流れるかを確認する

4、各ブロックの、音の長さを、調整する。

※フレーズとフレーズの間に、「ひと呼吸」おきたい場合は、制御パレット内にある「●●秒待つ」ブロックを使って実現することが出来ます。

mBlock5_1秒待つブロック画像

これで作ったプログラムを見てみましょう。とても長くて、分かりにくいプログラムになりました。

プログラムを作る時は、だれが見ても分かりやすいように、少ないブロックで、簡単に作ることが出来ないか、いつも考えることがとても大切です。

それでは、この長いプログラムをもっと見やすく、分かりやすくできないか、考えてみましょう。

ここで、注目してほしいのは、「ソソファファミミレー」が2回繰り返されている所です。

ソソファファミミレー ソソファファミミレー

G G F F E E D       G G F F E E D

この部分を、「制御」パレットにある、繰り返しブロックを使って、短くしましょう。

mBlock5_制御ブロックパレット

■繰り返しブロックの種類

繰り返しブロックは、3種類あります。

mBlock5_10回繰り返しブロック画像

「〇〇」回(かい)繰り返すブロックは、繰り返しの回数を指定したいときに使います。

mBlock5_「ずっと」繰り返しブロック画像

「ずっと」ブロックは、ずっとプログラムを実行させておきたいときに使います。「ずっと繰り返す」ブロックは、この後に習う、センサーを使ったプログラミングで、とても重要な役割をします。

mBlock5_●●まで繰り返すブロック画像

「〇〇」まで繰り返すブロックは、ひし形の所に、「条件を表すブロック」をいれます。このブロックは、演算やセンサーのブロックを活用したいときに、活躍するブロックです。

ここでは、「●●回繰り返す」の、回数を2に変更して、使ってみましょう。下のように、スクリプトが短くなりました。

mBlock5_きらきら星スクリプト

 

ここがポイント ~イベント~

ロボットは、一つの動作が終わるまで、次の動作をすることが出来ません。 プログラミングするときは、ひとつひとつ、丁寧に、動作をプログラムする必要があります。 

人間(にんげん)は、無意識にうちに順番に物事を進めます。その時、人間は、順番を入れ替えたり、同時におこなったりすることがあります。

 しかし、ロボットは、一つの動作が終わるまで、次の動作には進めません。

自分が思っている動作をロボットにしてほしい時は、どう動いてほしいかを、

細かく分け、一つ一つ順番に丁寧に指示してあげる必要があります。

mBlock5_順次処理の説明画像                             

ティンカリング ~色々演奏してみよう~

1、カエルの歌を演奏させてみよう

2、インターネットで楽譜をしらべて、好きな曲を演奏させてみよう