リモコンを使ったプログラムの作成
4 リモコンを使ったプログラムの作成
制御カーには専用のリモコンが付いています。リモコンには「FORWARD(前進)」
「BACK(後退)」「RIGHT(右折)」「LEFT(左折)」「START(スタート)」の
ボタンが付います。(「START」ボタンは本体にも付いています。機能はリモコンと
共通です。)これらを用いて「条件分岐」のプログラムを作ってゆきます。
4-1 ボタン入力の確認
本体の「START ボタン」を押せば LED が光るプログラムを作成します。先ずメニュー
ボタンの「入力」から下図の 3 つのブロックをワークスペースに配置します。
「右タッチセンサ」を「START ボタン」に変更し下図のように接続します。
〈右タッチセンサ〉=〈ON〉の状態にする
「右タッチセンサ」を「START ボタン」
に変更する。
23
リモコンを使ったプログラムの作成
次に条件を設定する「もしブロック」をワークスペースに配置します。そして先ほどの
接続済みのブロック群を下図のように「もしブロック」に接続します。
「もしブロック」の「条件式(じょうけんしき)」の部分に、
「〈START ボタン〉=〈ON〉としたブロック」を接続する。
更に「LED ブロック」を下図のように接続します。
LED の状態は「ON」にする。
そして、「くり返しブロック」ともう一つ「LED ブロック」を下図のように接続しま
す。LED ブロックは「OFF」に設定します。
「LED ブロック」は「OFF」に設定。
「くり返しブロック」は「ずっとくりかえす」を使用します。
24
リモコンを使ったプログラムの作成
最後に「メインブロック」に接続します。
これでプログラムは完成です。制御カーにプログラムを書き込んで動作を確認します。
このプログラムでは「START ボタン」を押している間だけ LED を点灯させるようにな
っています。制御カーの「START ボタン」を押して、動作を確認してください。
4-2 リモコンを使ったプログラム
それではリモコンを使ったプログラムを作成してゆきます。ここではリモコンの方向ボ
タンを押した時にその方向に進むプログラムを作成します。
先ず「FORWARD(前進)ボタン」を押した時に制御カーが前進するプログラムは以
下のようになります。
「FORWARD ボタン」にする。
時間は「1(0.1 秒)」にする。
方向はは「前進」にする。
プログラムを書き込んでリモコンを接続し、動作を確認してください。「FORWARD
ボタン」を押している間、前進します。
25
リモコンを使ったプログラムの作成
次に「BACK(後退)ボタン」を押した時の動作を追加します。「BACK ボタン」を押
している間、制御カーを後退させるようにします。下図のようにブロックを追加してく
ださい。
追加したブロック群
プログラムを書き込んで動作を確認してください。このプロフラムでは「くり返しブロ
ック」の中に「もしブロック」が 2 つ続けて接続されています。プログラムが開始する
と、先ず最初の「もしブロック」で
「FORWARD ボタン」が押されて
いるかをチェックします。押されて
スタート
フローチャートで書くと
このようになる。
いれば前進の「動きブロック」を実
行し、次に進みます。押されていな
ければ何もせずに次に進みます。そ
の後、次の「もしブロック」で
「BACK ボタン」が押されているか
をチェックし、先と同じ動作を実行
します。これらは「くり返しブロッ
ク」でくくられているので、電源を
切るまでくり返しつづけます。
YES
ボタン
ON?
前進
BACK ボタン
ON?
NO
NO
YES
後退
26
リモコンを使ったプログラムの作成
では、「FORWARD ボタン」と「BACK ボタン」を同時に押した場合はどのような動
きをするか見てみます。このプログラムでは 2 つの「もしブロック」を必ず通ることに
なるので、制御カーは前進、後退を繰り返す動きをします。この様な動作を回避する、
例えばどちらか一方の動作だけを実行させるにはどうすればよいか考えてみます。
この場合、もう一種類の「もしブロック」を使用します。メニューボタンから下図の「も
しブロック」をワークスペースに配置してください。
このブロックは条件が『成り立つ』場合と『成り立たない』場合でプログラムを「分岐」
させるブロックです。条件が成り立つ場合は上に配置されたブロックを、成り立たない
場合は下に配置されたブロックを実行します。ブロックは上か下かどちらか一方しか実
行さず、他方のブロックは実行されません。
条件式
ブロックA
条件式が『成り立つ』場合には「ブロッ
クA」実行され「ブロックB」は実行さ
れない。
ブロックB
条件式が『成り立たない』場合には「ブ
ロックB」実行され「ブロックA」は実
行されない。
条件
YES
ブロックA
NO
ブロックB
フローチャートで書くと
このようになる。
27
リモコンを使ったプログラムの作成
これを元に先ほどのプログラムを作り直してみます。
先ずどちらのボタンを優先させるかを決めます。今回は「FORWARD ボタン」を優先
させ、同時に押した時は前進するようにします。
フローチャートで書くと下図のようになります。最初の「条件分岐」で「FORWARD
ボタン」をチェックし、押されていない時だけ「BACK ボタン」のチェックに進みます。
スタート
フローチャートで書くと
このようになる。
YES
ボタン
ON?
NO
前進
BACK ボタン
ON?
NO
YES
後退
このプログラムをブロックで作ってみます。先ず下図のようにブロックを接続し直しま
す。「FORWARD ボタン」を条件に設定し、成り立ったとき(押されたとき)に前進
するようにします。次に、成り立たない(「FORWARD ボタン」が押されていない)
ときの動作を考えます。
先ず「FORWARD ボタン」
が押されたときの動作を
設定する。
上図のフローチャートから、成り立たないときに「BACK ボタン」の条件分岐を設定す
ればよいことが分かります。次ページの図のようにブロックを接続します。
28
リモコンを使ったプログラムの作成
「FORWARD ボタン」の条件が成り立た
ないときに「BACK ボタン」の条件ブロ
ックを接続する。
プログラムの流れは下図のようになります。
どちらのボタンも押されていないとき
「BACK ボタン」が押されたとき
「FORWARD ボタン」が押されたとき(「BACK ボタン」の条件分岐には行かない)
29
リモコンを使ったプログラムの作成
ここまでのブロック群を下図のように「くり返しブロック」と「メインブロック」に接
続するとプログラムは完成です。
制御カーに書き込んで動きを確認してみましょう。
同じように「RIGHT ボタン」「LEFT ボタン」を追加したプログラムは次ページのよう
になります。
30
リモコンを使ったプログラムの作成
31