親子で学ぶロボットプログラミング講座の第3回目は、「mBotではじめてのロボットプログラミング」です。
第1回目:親子でロボットプログラミングに取り組む
第2回目:ロボットプログラミングの準備をしよう
第1回・第2回を通じて、mBotを使い、自宅で親子でロボットプログラミングを楽しむための準備方法を解説しました。
この回からは、いよいよ、実際にロボットにプログラミングをしていき、様々な動きをさせていきます。
mBotには、3つの入力センサー(照度センサー・超音波センサー・ライントレースセンサー)と、2つの出力パーツ(LED・ブザー)、さらに、赤外線(IR)受光器と、赤外線送信器があります。
この回では、LEDやブザーを使って、「イベント駆動」「順次処理」「繰り返し処理」を学んでいきます。ロボットプログラミングをする上では、その他に、条件分岐処理や、変数などがありますが、それは、次回以降、センサーを使いながらご説明していきます。
尚、言葉は難しく感じるかもしれませんが、小学生のお子さんでもすぐに理解可能なので、楽しんで読んでいただけたらと思います。
STEP1:LEDを光らせてみよう
まずは、mBotのメインボード(mCore)にある、2つのLEDを光らせてみましょう。
図1-1 メインボード「mCore」
LEDライトは、光の三原色(RGB)を混ぜていろいろな色を作れます。Rはレッド(赤)、Gはグリーン(緑)、Bはブルー(青)のことです。
LEDの光は、電磁波で、その波の長さ(波長)で、色が変わって見えます。電磁波には、人間の目に、見えるものと、
見(み)えないものがあります。見えるものを、「可視光線」と言います。
皆さんの、部屋にあるテレビのリモコンは、赤外線を使って、テレビにチャンネルの数字を送っています。でも、その線が見えないのは、「可視光線」じゃないからです。
図1-2 電磁波と可視光線 出典:https://www.i-sss.jp/led-column/column21/
mBotロボットプログラミング(1)―mBotのLEDを光らせよう―
まずは、mBotの2つのLEDを両方、赤く光らせてみましょう。mBlock5にログインした後、「ファイル」→「新規」を選んで、新しいプログラム画面を開きます。
※新しいプログラム画面を開くと、デバイスタブの所に、「Codey」が、表示される場合は、前回で説明した通り、「Codey」を削除し、「mBot」を登録しておきましょう。
前回で説明したとおりにmBotとmBlock5を接続した後、いよいよプログラミングを、始めます。
以下の順番で、mBotのLEDが光るのを確認してみましょう。
(1)ブロックパレットエリアにある、「ライト・ブザー」タブをクリックすると、図1-3のようなブロックが確認できます。
図1-3 「ライト・ブザー」ブロック
(2)「ライト・ブザー」パレットの中にある、「ボード上の(全て)のLEDを赤で点灯する」というブロックを、スクリプトエリアに、ドラック&ドロップします。
(3)イベントブロックパレットにある「(スペース)キーが押されたとき」ブロックを、スクリプトエリアに、ドラック&ドロップして、(2)のブロックの上に、つなげます。
図1-4 全てのLEDを赤く光らせる
(4)図1-4のプログラムが完成したら、PCのスペースキーを押して、mBotのLEDが赤く光る事を確認しましょう。
(5)終わったら、図1-5のように、プログラムに名前を付けて、保存するをクリックします。すると、プログラムがmBlock5のサーバーに保存されます。
図1-5 プログラムを保存する
(6)もう一度、同じプログラムを開きたいときは、「ファイル」→「開く」を、選択すると、先程つけたプログラムの名前が確認できます(図1-6)。そのプログラムをクリックすると、保存されたプログラムが、表示されます。
図1-6 保存プログラムを確認
ここがポイント!~イベント~
イベントは、プログラムを実行するための、きっかけです。
イベントは、プログラミングをするうえで、最も基本的な、考え方です。
ロボットは、指示されている「きっかけ=イベント」が無いときに、勝手に動き出すことは、出来ません。
チャレンジ!
(1)LEDを、赤色以外の色に光らせてみよう。色を変える時は、ブロックの色の部分をクリックすると、図1-7のような設定画面が出てきます。
図1-7 LEDの色の設定画面
(2)LEDを、青色に、2秒間光らせてみよう
(3)左側のLEDだけを、緑色に光らせてみよう。
(4)図1-8のブロックの中に、0~255の数字を入れて、プログラムを実行してみよう。LEDはどのような光り方になるでしょうか?
(5)LEDを全て消してみよう。
図1-8 LEDの色を数字で設定するブロック
STEP2:ブザーで音を鳴らせてみよう
mBotは、ブザーを使って、色々なメロディを作ることが出来ます。mBotのケースを外すと、mBotの右側に、ブザーがついているのが確認できます。
mBotで音のプログラミングをする前に、ブザーの仕組みを簡単に紹介します。
「音」は、空気が振動して伝わります。ブザーは、コイルに電流が流れることで、磁片が、磁石とくっつこうとするときに、振動板が揺れて(音源)、空気の振動(音波)として伝わります。
その音波を受けた人間の鼓膜が振動し、聴覚神経に伝わることによって、「音」として感じ取ることが出来るのです。
図2-1 ブザーの仕組み 出典:https://monoist.atmarkit.co.jp/mn/articles/1301/09/news004.html
チャレンジ!ロボットプログラミング(2)ドレミファソラシドを作ろう
まずは、以下の手順で、「ド」の音を鳴らしてみましょう。
(1)「イベント」パレットを選び、「スペースきがー押されたとき」をドラック&ドロップ
(2)「ライト・ブザー」パレットを選(えら)び、「C4の音階を0.25秒鳴らす」をドラック&ドロップ
(3)図2-2のプログラムを作ったら、イベントを実行して、「ド」の音が鳴るか確認
図2-2 「ド」のプログラム
小学校では、ドレミファソラシド・・・・と習いますが、英語では、CDEFGABC・・・になります。
また、アルファベットの横にある数字は、オクターブを表します。例えばC3(ド)を、1オクターブ上げた音が、C4(ド)です(図2-3)。
図2-3 「ドレミ」と「CDE」
小学校では、音の長さは、○○分音符と習います。例えば、4分音符は、だいたい1秒ですが、正しい時間(秒)ではありません。
ロボットは、あいまいな時間を指示されても、どう動けばよいか、分からないので、プログラムをするとき、正しい時間の単位である「秒」でロボットに、音を鳴らす長さを伝えます。
ブザーブロックに最初に表示されている長さは、「0.25秒」ですが、音符にする場合は、だいたいの目安として、図2-4を参考にしましょう。
図2-4 音符と長さ
ブザーで「ド」の音を鳴らすことが出来た後は、ドレミファソラシドをプログラミングしてみましょう。
「ド」を鳴らせた時と同じ方法で、C4の下に、D4、E4・・・とブロックを繋ぎ合わせて、ドレミファソラシドがなるか確かめてみましょう(図2-5)。
図2-5 「ドレミファソラシド」
小数点は、小学校3年の算数で習いますので、小学校1・2年生では難しいかも知れません。ただ、1秒よりも短い数字と説明して、実際にブザーを1秒鳴らすのと、0.25秒鳴らせば、多くの子が、直感的に理解できるようになると思います。ロボットプログラミングでは、実際にロボットを動かしながら、小数の数を変えていく事で、直感的に理解していけると思います。
チャレンジ!ロボットプログラミング(3)きらきら星を演奏してみよう
次は、みんな知っている、「きらきら星」を演奏させてみましょう(図2-6)。
図2-6 「きらきら星」出典:http://ototama.com
きらきら星は、ドレミで表すと、
ドドソソララソー ファファミミレレドー
ソソファファミミレー ソソファファミミレー
ドドソソララソー ファファミミレレドー
では、以下の手順でプログラムを作ってみましょう。
(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)各ブロックの、音の長さを、調整する。
フレーズとフレーズの間に、「ひと呼吸」おきたい場合は、制御パレット内にある「●●秒待つ」ブロックを使って実現することが出来ます。
これで作ったプログラムを見てみましょう。とても長くて、分かりにくいプログラムになりました。
プログラムを作る時は、だれが見ても分かりやすいように、少ないブロックで、簡単に作ることが出来ないか、いつも考えることがとても大切です。
それでは、この長いプログラムをもっと見やすく、分かりやすくできないか、考えてみましょう。
ここで、注目してほしいのは、「ソソファファミミレー」が2回繰り返されている所です。
ソソファファミミレー ソソファファミミレー
G G F F E E D G G F F E E D
この部分を、「制御」パレットにある、繰り返しブロックを使って、短くしましょう。
図2-6 制御 ブロックパレット
繰り返しブロックの種類
繰り返しブロックは、3種類あります。
「〇〇」回繰り返すブロックは、繰り返しの回数を指定したいときに使います。
「ずっと」ブロックは、ずっとプログラムを実行させておきたいときに使います。「ずっと繰り返す」ブロックは、この後に習う、センサーを使ったプログラミングで、とても重要な役割をします。
「〇〇」まで繰り返すブロックは、ひし形の所に、「条件を表すブロック」をいれます。このブロックは、演算やセンサーのブロックを活用したいときに、活躍するブロックです。
ここでは、【「〇〇」回繰り返すブロック】の、回数を2に変更して、使ってみましょう。
ブロック内の数字を書き換える場合は、「半角英数」で書き換えましょう。
次のページのように、プログラムが少し、短く、すっきりできたと思います。
図2-7 繰り返しを使って、プログラムを見やすくする
ここがポイント~順次処理~
ロボットは、一つの動作(どうさ)が終わるまで、次の動作をすることが出来ません。
プログラミングするときは、ひとつひとつ、丁寧に、動作をプログラムする必要があります。
人間は、無意識にうちに順番に物事を進めます。その時、人間は、順番を入れ替えたり、同時におこなったりすることがあります。
しかし、ロボットは、一つの動作が終わるまで、次の動作には進めません。自分が思っている動作をロボットにしてほしい時は、どう動いてほしいかを、細かく分け、一つ一つ順番に丁寧に指示してあげる必要があります。
チャレンジ!
(1)カエルの歌を演奏させてみよう
(2)インターネットで楽譜をしらべて、好きな曲を演奏させてみよう
まめ知識
音は空気の振動という事を、この回の最初に紹介しました。例えば、定規を机の端において、片方を固定し、もう片方の手で、押し込んで放してみましょう、どんな音が聞こえて、持っている手にどんな振動を感じますか?定規の場所を変えてみたり、抑える場所を変えてみたりしましょう。色々な音が出るはずです。この実験から、早く振動するほど、音が高く、遅いほど、低くなることが分かります。振動の速さは、「周波数=Hz(ヘルツ)」という単位で表します。周波数を一定のルールにで、変化させれば、ド・レ・ミ……の音階が作れます。
mBlock5では、周波数を指定して、ブザーを鳴らすブロックがあります。
例えば、うえのブロックの700Hzを、262Hzに設定すると、「C4」と同じ音「ド」が出ます。下の図は、C・D・E・・と、周波数の関係です。Lowは「3」、Middleは「4」、Highは「5」を表します。
例:C4=262Hz
ちなみに、人間の耳で聞こえるのは、20Hzから20kHz(20000Hz)の音です。それより低かったり、高い音は聞こえません。
筆者プロフィール
荻原 裕
TINKERBASE代表
2010年よりIOTデバイス開発ベンチャー企業での海外営業・新規事業開発・大企業向けIOT事業開発アクセラレーション責任者を歴任。
2018年より出張専門プログラミングスクール「TinkerBase」運営。
国際的ロボットプログラミング大会「MakeX」
2019東京大会審判委員長。2020東京大会事務総長。
2015年経済産業省登録 中小企業診断士。著書:IOTビジネス入門&実践講座 2016年 ソシム出版