はじめに
この記事(きじ)では,mBotを操作(そうさ)するプログラムをつくってみます。この記事で紹介(しょうかい)するプログラムを作成(さくせい)するためには,mBotとmBlockが必要(ひつよう)になります。mBotは,Amazonや家電量販店(かでんりょうはんてん)でも購入(こうにゅう)することができます。mBotとmBlockを準備(じゅんび)するときには,この記事も読んでみてください。
この記事でできること
この記事を読んでできることは,mBotが目の前(めのまえ)の障害物(しょうがいぶつ)を回避(かいひ)できるようになります。
プログラムを作成する前(まえ)に
何(なに)も考えずにプログラムを作り始める(つくりはじめる)ことが悪い(わるい)わけではありませんが,プログラムを作り始める前に,どのようなプログラムを作りたいのか,考えておくことは重要(じゅうよう)です。mBotに対して目の前の障害物を回避するために,どのような命令(めいれい)をすればよいでしょうか?少し(すこし)考えてみましょう。
私たち人間は無意識(むいしき)のうちにできているので普段(ふだん)はあまり気(き)にしていないかもしれませんが,人間がどのように障害物を回避しているか考えてみると,いいかもしれません。人によって少し違う(ちがう)かもしれませんが,以下(いか)のように考えて(かんがえて)いるのではないでしょうか?
1. 目の前に障害物があるか把握(はあく)する
2. 目の前に障害物があるか確認(かくにん)する
- 障害物がない場合
- 前に進む(まえにすすむ)
- 1.の処理(しょり)に戻る(もどる)
- 障害物がある場合
- 止まる(とまる)
- 方向(ほうこう)を変える(かえる)
- 前に進む(まえにすすむ)
- 1.の処理(しょり)に戻る(もどる)
目的(もくてき)は「障害物を回避すること」なので,上と同じ(おなじ)考え方でないといけないとか,そういうことはありません。自分で考えて試して(ためして)みることが大切(たいせつ)なので,人と違っても大丈夫(だいじょうぶ)です。また,まずはプログラムの練習(れんしゅう)をしたいということであれば,上の内容(ないよう)に沿って(そって)プログラムをつくってみましょう。
プログラミングの作り方(つくりかた)
1 はじめに,mBlockを起動(きどう)します。いつものように,パンダのアイコンをクリックして起動します。
2 mBotの電源(でんげん)を入(い)れる
mBotの電源を入れます。mBotの電源の場所が分からない場合は,この記事を参考(さんこう)にしてください。
3 mBotとパソコンを接続(せつぞく)する
mBlockを起動した後(のち),以下(いか)のように接続ボタンをクリックします。
次(つぎ)に,Bluetoothを選択(せんたく)し,Makeblock...からはじまるmBotと接続します。
4 イベントの選択(せんたく)
ブロックパレットから,「イベント」を選択(せんたく)します。
5 [緑(みどり)の旗(はた)が押されたとき]というブロックを,スクリプトエリアにドラッグ&ドロップします。
6 処理(しょり)を繰り返す(くりかえす)制御(せいぎょ)を設定(せってい)する
目の前に障害物がないか確認し,前に動くか向きを変えるか...という命令を繰り返す必要があります。繰り返しの処理は,以下のように[制御]-[ずっと]というブロックを使います。このブロックの中に,mBotが障害物を回避するブロックを入れてくことになります。
7 目の前に障害物があるか確認する
目の前に障害物があるか確認するために,今回は[もし<>なら でなければ]というブロックを使います。この記事のはじめに「もし<目の前に障害物なかったら>前に進み,<目の前に障害物がなかったら>でなければ,方向を変える」という処理をこのブロックで実現(じつげん)します。このような処理のことを条件分岐(じょうけんぶんき)といいます。プログラミングの世界では,とても大切な考え方です。
8 <目の前に障害物がなかったら>という条件を決めます
ブロックパレットの[演算]から,<() > 50>というブロックを,[もし<>なら でなければ]の<>に入れます。
次に,[もし<>なら でなければ]の<>に対して,<目の前に障害物がなかったら>という条件をいれる必要があります。
[センサー]-[超音波センサー[ポート3]の値(cm)]を<() > 50>の()にドラッグ&ドロップします。
mBotの目は超音波(ちょうおんぱ)センサーになっていて,目の前の物(もの)までの距離(きょり)を測って(はかって)います。人間には聞こえない音(おと)を使って(つかって),目の前に障害物がないか確認します。
次に,どのぐらいの距離(きょり)で方向を変えるか指定(してい)します。mBotから障害物の距離が20cm(センチメートル)の時に方向を変えるようにします。
なお,「(超音波センサー[ポート3]の値(cm)) > 20」の > の意味(いみ)は,超音波センサー[ポート3]の値(cm)が20(cm)よりも大きいという意味です。
つまり,mBotが測った自分と物体との距離が20cmよりも大きい場合は,まだ目の前に障害物がないと判断し前に進みます。この条件にあてはまらない場合は,目の前に障害物があると判断し,動きを止めて方向を変える命令を実行します。
9 各条件で動きを変える
ブロックパレットの[動き]から,各条件にあったブロックを下記のように入れます。
10 緑の旗(はた)を押す
どうなりましたか?目の前の壁が近づくと,右に方向を変えて前進するようになったと思います。