ブロックでロボットを走らせるプログラムを作ってみよう
1. 目的
プログラミングと耳にすると，言語を覚えてパソコンのキーボードをカチャカチャと・・・
そんなイメージから離れて，プログラムの基本的な処理や構造を並べて触れて動かして感じてもらおうというワークショップです．

2. 実施内容の概要【概要】
本ワークショップでは，ブロック型言語を採用したタンジブルなプログラミングツー
ル：P-CUBE を使用して，移動ロボットのライントレースプログラムの作成に挑戦します．
ライントレースプログラムを上手く作成すると，ロボットに搭載された左右 2 個の赤外線センサからの情報（白／黒）に応じて移動方向を調整しながらコース上の線に沿うように動かすことができます．ライントレースプログラムを完成させるまでの過程でいくつかの単純なプログラムを作りながら，プログラムの基本である「順次」「繰り返し」「条件分岐」の概念を学びます．
【P-CUBE について】
P-CUBE はプログラミングブロックをプログラムマットの上に並べるだけで移動ロボットを制御するプログラムを作成できます．プログラミングブロックは，種類やブロック上に示された情報を手触りや重さなどで判別できるように配慮されています．また各プログ
ラミングブロックには識別用の RFID タグが貼付されており，プログラムマットに備えられたリーダーバーを操作することで配置情報を読み取ることができます．読み取り時は読み取り位置を示す音階が流れるため，耳で操作がうまくいっているかを判断することができます3. 講師用の実施手順の詳細


準備することがら，物品
本ワークショップに使用する物品は次のとおりです．各物品の構成は前ページの図中の物品番号を参照してください．


ブロック型プログラミングツール P-CUBE- プログラムマット（①）- プログラミングブロック（②）

プログラム情報転送用 PC（③）(Visual Basic が使用可能な Win 機，要無線 LAN 機能)＆モニタ＆マウス# キーボードはトラブル発生時等に必要

P-CUBE 用移動ロボット（④）



移動ロボット走行用コースマット（⑤）



各種延長ケーブル（あったほうがのぞましい）- USB-A（オス-メス）1 本→

プログラムマットと転送用 PC 接続用- モニタ出力用ケーブル（HDMI など，デスクトップ機の場合）- PC 電源用延長ケーブル① プログラムマット
プログラミングブロックを並べるための枠を 30 個備えたマットです．マット下部に RFID リーダを搭載したリーダーバーがあります．リーダーバーをプログラム作成後にマットの下でスライドさせることによってプログラム構造を読み取ることができます．
② プログラミングブロック
移動ロボットを制御するためのプログラミング言語です．ロボットの移動方向を指定する「動作ブロック（4 個）」，動作時間を指定する「タイマーブロック（4 個）」，赤外線センサの入力情報（白 or 黒）によって処理を分岐する「条件分岐ブロック（左センサ用（青）2 セット， 右センサ用（黄）1 セット）」，繰り返し処理を指定する「ループブロック（1 セット）」が 1 式となります．
③ プログラム転送用 PC (OS:Win8.1 or Win10, )P-CUBE で作成したプログラム情報を読み取り，移動ロボットに転送するために使用します．読み取り／転送アプリケーション：ASIOP は Visual Basic 使用．
④ P-CUBE 用移動ロボット
走行コースの色（白 or 黒）を見分けるための赤外線センサ 2 基，および駆動用のモータ 2 基を装備したロボットです．制御用マイコン

Arduino Leonardo

Ethernet を搭載しています．P-CUBE のプログラム情報は Wi-fi 機能搭載 SD カード

Flash Airに無線 LAN を介して書き込まれます．

⑤ 移動ロボット用コースマット
白地に黒ラインを描いた走行用マットです．直線，および 90°ターンの 2 パターンがあり，組み合わせて好きな形状のコースを作成できます．サイズは一辺 30cm程度で，手触りで走行ラインを確認できます．
実施手順
ワークショップにおける設置・準備，実施は以下の手順で行います．
[1] 設置・準備(ア)プログラムマットを組み立てる- ベースマットのレールにリーダーバーを取り付ける- ベースマットの上にブロックマットを設置する．

(イ)リーダーバー内の RFID リーダの上位インタフェース基板と転送用 PC を接続ケーブル（シリアル-USB(A)ケーブル：右図参照）でつなぐ．
(ウ)上位インタフェース基板の電源アダプタを接続しLED 点灯（オレンジ）を確認する．
(エ)転送用 PC を起動．上位インタフェースとの接続状態（ポート）を確認する．
- スタート→コントロールパネル→デバイスマネージャー→ハードウェアとサウンド→デバ
イスマネージャー(オ)読み取り／転送用アプリケーション ASIOP を起動する．
- デスクトップ画面

slide_type_program→program_mat_ASIOP →ASIOP_SRC →ASIOP.sln をダブルクリック- アプリケーションの選択では「Visual Basic Express 2010」で OK- 「・・・この種類のプロジェクトをサポートするバージョンを使用してください」のメッセージ BOX が表示された場合は「OK」を押す(カ)デバッグの開始ボタンを押す or F5 キーを押して ASI Series Operation
Program を立ち上げる．ウィンドウ左やや上のシリアルポート選択（☆）が（エ）で選択した COM ポートと同一であるかを確認，異なっていれば正しいものを選択する．その後 Open ボタン（★）をクリック．

(キ)右上の「サンプルデモ」タブをクリック→ASI4000ⅡC インベントリボタンをクリック[2] プログラムの作成（講義開始）
参加者（生徒）に課題内容を説明しプログラムを作成してもらう．詳細は別添の進行テキストを参照．
[3] 移動ロボットへのプログラム転送スタンバイ
読み取り／転送操作の前に，移動ロボットの電源を入れスタンバイさせておく．
(ア) 移動ロボットに Flash Air を挿入する．
(イ) Flash Air 用の電源スイッチを ON にする．
(ウ) 転送用 PC の無線 LAN を“p-cube flash air2” に接続する．
[4] プログラムの読み取り／転送
P-CUBE で作成したプログラム情報を読み取り，移動ロボットに接続されたFlashAir（SD カード）に書き込みます．

(ア)RFID リーダを読み取り状態にする．
- ASIOP 画面上の「Re Start」ボタンをクリック(イ)プログラムマットのリーダーバーを奥から手前に順次スライドさせてプログラムを読み取る．
- このとき，各段順に音階（ドレミファソラシド）が鳴り，ブロックが配置されているマスの番号を音声で知らせてくれる．
(ウ)プログラムマットの全ての段の読み取りが終了したら「SD カードに保存」ボ
タンをクリックする．

(エ)読み取ったプログラム構造が合致していれば OK をクリック，書き込み完了
ウィンドウが立ち上がったら再度 OK をクリック．

(オ)移動ロボットの FlashAir の電源スイッチを OFF にする．

[5] プログラムの実行(ア)ロボットを走行させる場所まで持っていく．
(イ)移動ロボットの電源スイッチを ON にする．
※

この操作で FlashAir にも電源が供給される．

(ウ)スタート位置を決めたら移動ロボットのプログラム実行ボタンを押す．
[6] ロボットの走行状態を確認
移動ロボットは右旋回，左旋回時に電子音が鳴り，モータの走行音とあわせて走行状況を確認可能．
[7] 走行後は移動ロボット上の Arduino の電源を OFF にする．次に新しいプログラ
ムを作成し実行する場合は FlashAir の電源ボタンを ON にしておく．
注意すべき点

プログラムを実行した後，移動ロボットに新しいプログラム情報を書き込む場合，Arduino の電源を OFF にし，FlashAir を再起動しなければ書き込みができません．



他の Wi-fi が飛んでいる場合は接続するまで時間を要する場合があります．

到達目標
次の内容をブロックの配置と移動ロボットの動作を確認しながら理解することを目標にします．
動作処理に時間指定を入れなければ移動ロボットが動かない．

移動ロボットは命令を上から順に実行していく．

処理を繰り返す（無限ループ）ことができる．



条件によって処理を変えることができる．

4. 生徒用資料
別添の進行テキストを参考にしてください．

移動ロボットのプログラムに挑戦 進行テキスト
1. はじめにプログラムは，コンピューターのマウスやキーボードをつかってやるものと思っている方もいるでしょう．
しかし，このワークショップでは，マウスやキーボードをつかわずに，木のブロックをならべて移動（いどう）ロボットをうごかすプログラムをつくります．木のブロックをつかってプログラムをつくる道具（どうぐ）のことを P-CUBE とよびます．うまくゆけば，ロボットが走行（そうこう）コースからはみださないよ
うにじぶんでうごきを調節（ちょうせつ）するプログラムがつくれます．
2. ワークショップの進行について
ワークショップは，導入（どうにゅう），プログラムのつくりかた，練習問題（れんしゅうもんだい），アンケートの順（じゅん）ですすめます．導入では，移動（いどう）ロボッ
ト，走行（そうこう）コース，プログラムマット，および P-CUBE でつかわれるプログラ
ミングブロックをかくにんします．

INSIDE
with a IRsensor

3. 内容3.1 導入これから P-CUBE をつかってプログラムをつくるまえに，つかうものをたしかめておきましょう．たしかめるものは「移動（いどう）ロボット」「走行（そうこう）コース」「プログラムマット」「プログラミングブロック」の 4 種類（しゅるい）です．
【移動（いどう）ロボット】
ワークショップでとりくむのはプログラミングです．プログラムでうごかすのは移動（いどう）ロボットです．まず，移動（いどう）ロボットをさわってロボットの “まえ” と“うしろ” を確認（かくにん）しましょう．フチがまるいほうがまえ，直線（ちょくせん）のほうがうしろです．
ロボットのうしろよりのひだりとみぎにそれぞれ 1 基（き）ずつ，モーターでまわす大きな車輪（しゃりん）がついています．ひとつの車輪に 1 台のモーターがついています．
車輪（しゃりん）が回転（かいてん）する方向（ほうこう）を調節（ちょうせつ）すると前進（ぜんしん），後進（バック），右旋回（みぎせんかい），左旋回（ひだりせんかい）とすすむ方向をかえることができます．これはロボットの足（あし）ですね．
移動ロボットには目の役割（やくわり）をする赤外線（せきがいせん）センサーというものもついています．ロボットの前（まえ）の下（した），ひだりとみぎに 1 つずつあります．赤外線センサーをつかうとロボットのしたにある道（みち）の色（いろ）を見わけることができます．じょうずにプログラムをつくると，黒（くろ）い線（せん）にそってロボットがうごいてくれるようになります．
【走行（そうこう）コース】
移動ロボットを走行（そうこう）させるコースは，白（しろ）と黒（くろ）でぬりわけられています．いちど走行コースをさわってみましょう．スポンジのようなやわらかさがあるところと紙（かみ）でさらさらしたところがあるのがわかるでしょうか．スポンジのようにやわらかいところが黒色，紙（かみ）のさらさらしたところが白色です．
【プログラムマット】
プログラムマットは，P-CUBE のプログラミングブロックをはめこんでならべるためのマットです．プログラムマットには 30 個の枠（わく）があり，プログラムをつくるときは，上（とおいほう）から下（てまえ）に向かってブロックをおいていきます．いちばんはじめ（プログラムのさいしょ）のブロックは，左の図（ず）の赤いまるでかこまれたところ，もっとも上（うえ）の段（だん）の左側（ひだりがわ）のわくに入れます． さい
しょにたしかめておきましょう．

【プログラミングブロック】
P-CUBE は，木のブロックを並べて移動ロボットのプログラムができる装置（そうち）です．ブロックは「プログラミングブロック」とよばれ，移動ロボットに指示（しじ）する内容（ないよう）によってつかいわけます．プログラミングブロックの種類（しゅるい）をじゅんばんにたしかめていきましょう．
・ どうさブロック
移動ロボットのうごく方向（ほうこう）を指定（してい）するためのブロックです．スギでできていて立方体（りっぽうたい）のような形（かたち）をしています．さらさらしていて木のかおりがするのがわかるでしょうか．
なにも凹凸（おうとつ）がない面（めん）が上（うえ）と下（した）です．上側（うえがわ）の角（かど）はななめにきりとられていてすぼまっているのがわかるでしょうか．つぎに凹凸がある横側（よこがわ）の側面（そくめん）にうつります．側面はぜんぶで 4 面あります．それぞれの面が「前進（ぜんしん）」「後進（バック）」「右旋回（みぎせんかい）」「左旋回（ひだりせんかい）」をあらわしています．どの面がどんな動作（どうさ）かわかるでしょうか．凹凸は矢印（やじるし）のかたちをしていて，スポンジ状（じょう）のやわらかいところがさすむきが移動ロボットのすすむ方向をあらわしています．
・ タイマーブロック
タイマーブロックは，移動ロボットの動作時間（どうさじかん）を設定（せってい）するためのブロックです．もちあげてみましょう．どうさブロックとおもさやてざわりがちがうのがわかるでしょうか．タイマーブロックはコルクというかるい材料（ざいりょう）でできています．かたちはどうさブロックとおなじです．角（かど）がななめにきりとられていてすぼまっているのが上側（うえがわ）です．側面 4 面には動作（どうさ）させる時間（じかん）のながさをあらわした砂時計（すなどけい）が凹凸（おうとつ）でかかれています．4 つの凸（とつ）がある面がもっともながい動作時間（どうさじかん），1 つしか凸（とつ）がない面がもっともみじ
かい動作時間（どうさじかん）をあらわしています．

・ くりかえし（LOOP）ブロック
くりかえし（LOOP ＝ループ）ブロックは，移動（いどう）ロボットの動作（どうさ）を持続（じぞく）させたいときに使います．さわってみるとどうさブロックやタイマーブロックにくらべて大きくておもいことがわかるでしょうか．くりかえしブロックは，ケヤキでできています． ２つのブロックがひもでつながれて対（セット）になっています．くりかえしたい処理（しょり），たとえば「前進」などを対（セット）のブロックではさみます．あいだにはさむブロックのかずは，プログラムマットにはいる範囲（はんい）であれば制限（せいげん）はありません．
・ IF ブロック
IF ブロックは「イフ ブロック」と読みます．日本語（にほんご）で「もしもブロック」とよんでもよいでしょう．
このブロックは移動ロボットの状態（じょうたい）によってロボットのうごきをかえたいときにつかいます．移動ロボットに赤外線（せきがいせん）センサーがあることはロボットにさわったときに確認（かくにん）しているでしょう．たとえば，この赤外線センサーからよみこまれた情報（じょうほう）が白（さらさら）か，黒（やわらかい）かによって移動ロボットのうごきを「白のときは前進（ぜんしん），黒のときは右旋回（みぎせんかい）」などとかえたいときにつかいます．
IF ブロックもくりかえしブロックとおなじように，2 つのブロックが対（セット）になっていて，条件によってかえる処理（しょり）を「はじまりブロック」と「おわりブロック」ではさみます．「はじまりブロック」は，手（て）でふれる面（めん）がひしがたにちかいかたちをしています．「おわりブロック」は，半円（はんえん）に近（ちか）いかたちをしています．「はじまりブロック」の上面は白色と黒色で分かれていますが，これはロボットの走行コースの白色（さらっとした紙）と黒色（やわらかいスポンジ）と同じ材料が使われています．手触りで確認してみてください．
「はじまりブロック」は，ロボットにある赤外線センサーのみぎ用（よう）とひだり用（よう）でわかれています．それぞれのブロックの色（いろ）はきいろ（右）とあおいろ（左）でぬりわけられています．また，赤外線センサーの位置（みぎかひだりか）とおなじ側（がわ）がおもくなっています．ほかにも赤外線センサーのばしょとおなじ側，ブロックのうえにちいさくまるい凸（とつ）があります．手ざわりでも確認してみましょう．
「はじまりブロック」は，はめこむときのむきがきまっています．上（むこうがわ）にくる面には，手でもつときの指（ゆび）のくぼみがあります．また，「おわりブロック」はまるいほうが下（てまえ）です．

3.2 プログラムのつくりかた【プログラム 1】
さいしょにどうさブロック（前進）を 1 個，プログラムマットに配置してみましょう．ロボットは動くでしょうか．動かないはずです．なぜでしょう・・・？

【プログラム 2】：順次（シーケンシャル）プログラム
移動ロボットを動かすためには，タイマーブロックを使ってみる方法があります．さきほど（【プログラム 1】）で置いたどうさブロックの右側にタイマーブロックを置いてみましょう．ロボットはどんな動きをするでしょうか？また，時間があったらタイマーブロックの置く面を変えると動きはどのように変わるでしょうか？
【プログラム 3】：くりかえしプログラム
さきほどのプログラム（【プログラム 2】）では，ロボットが動いたあと，すぐに止まってしまいます．ロボットを動かしつづけたいとき（たとえば，ずっと右に旋回させつづけたいとき）は，「くりかえしブロック」を使う方法があります．では，くりかえしブロックの片方を一番上に置き，次にどうさブロック（右旋回させつづけたいときは右旋回を上に）を置きましょう．その下にくりかえしブロックの片方を置いてどうさブロックをはさんでみたら，ロボットを走らせてみましょう．
【プログラム 4】：条件分岐プログラム 1
これまでのプログラムでは，ロボットはプログラムマットのうえにおいたどうさブロックの方向にしかうごけませんでした．ロボットがコースラインにそうようにうごくためには，ラインからはずれないようにうごく方向（ほうこう）を調整（ちょうせい）しなければなりません．ラインからはずれているかは赤外線センサーをつかってロボットのしたにある色（いろ）を見わけることで判断（はんだん）します．色によってうごく方向をかえながらラインにそってうごくプログラムのことをライントレースプログラムといいます．赤外線センサーがよみとった色に応じてうごく方向を変えるには IF ブ
ロックをつかいます．
まず，IF ブロックをひとつ（右センサー／左センサーのどちらでも構いません）つかったライントレースプログラムに挑戦（ちょうせん）してみましょう．
コースは四角い周回コースです．IF ブロック（はじまり）の下には，ロボットの赤外線センサーから読み取られた情報に応じたどうさブロックを置きます．こうすることで，センサーからの条件によってロボットは動く方向を変えます．さて，ロボットの下が白色（さらさらの紙）のときと黒色（やわらかいスポンジ）のとき，それぞれどのどうさブロックを置けば，コースに沿って走るでしょうか．ここで注意しなければならないのは，IF ブロ
ックとどうさブロックだけでは，ロボットは動きません．どのブロックが必要でしょう？
【プログラム 5】：条件分岐プログラム 2【プログラム 4】では赤外線センサーを１個だけ使いました．さいごに，赤外線センサー２つを使う方法を考えてみましょう．コー
スのラインは黒色（やわらかいマット）ですか？それとも白色（さらさらした紙）ですか？ロボットにあるふたつの赤外線センサーでコースの線をはさむようにして走らせることができるはずです．＜
右，左＞の赤外線センサーが読んだ情報が＜黒（やわらかい），黒（やわらかい）＞のとき，＜白（さらさら），白（さらさら）＞のとき，＜黒（やわらかい），白（さらさら）＞のとき，＜白（さらさら），黒（やわらかい）＞のとき，それぞれどのような動きをすればよいか考えてみてください．

こたえはつぎのページ

3.3 練習問題（れんしゅうもんだい）
さて，あたらしいコースを用意（ようい）しました．さっき【プログラム 5】でとりくんだときとコースの色（やわらかいところとさらさらしたところ）が逆（ぎゃく）になっているのがわかります
か？では赤外線センサー2 個をつかってコースにそってはしるプログラムをつくってみましょう．

こたえはつぎのページ