各ブロックの説明
7 各ブロックの説明
ここでは各ブロックの機能を説明します。
7-1 メイン
メインプログラムを作成するブロックです。このブロックの中に配置されたブロックが
プログラムとして制御カーに書き込まれます。
7-2 動き・LED
制御カーの動き及び LED の状態を設定するブロック群です。
方向設定ブロック
(時間設定あり)
方向設定ブロック
(時間設定なし)
前進
後退
右折
左折
停止
低速
中速
高速
速度ブロック
方向ブロック
数値ブロック
LED ブロック
36
各ブロックの説明
方向設定ブロック(時間設定あり)
「速度ブロック」「方向ブロック」「数値ブロック(※)」を接続することで、制御カ
ーの進む「速度」「方向」「時間」を設定します。(※設定時間経過後、制御カーは停
止する。)
時間指定は 0.1 秒単位です。「5」とした場合は「0.5 秒」、「10」で「1 秒」となりま
す。
速度ブロック
方向ブロック
数値ブロック(時間設定)※
方向設定ブロック(時間設定なし)
制御カーの進む「速度」「方向」を設定します。
時間設定が無く、メインプログラムが終了するか「停止(※次々項参照)」を指定するま
で制御カーは動き続けます。
速度ブロック
速度ブロック
速度ブロック
制御カーの進む速度を「低速」「中速」「高速」の 3 段階から選択します。
低速
中速
高速
37
各ブロックの説明
方向ブロック
制御カーの進む方向を「前進」「後退」「右折」「左折」「停止」の 5 種類から選択し
ます。
前進
後退
右折
左折
停止
LED ブロック
LED を点灯・消灯させます。時間を設定する場合は、「待つ」ブロックと組合わせま
す。
7-3 入力
各入力の状態を設定するブロック群です。
センサ設定ブロック
入力ブロック
入力状態ブロック
入力状態ブロック
(中央明るさセンサ用)
38
各ブロックの説明
入力設定ブロック
「入力ブロック」「入力状態ブロック」を接続することにより、入力の状態を設定しま
す。状態は 6 種類の中から選ぶ事ができます。
入力ブロック
入力状態ブロック
入力ブロック
入力は以下の 10 種類から選ぶ事が出来ます。
【センサー基板からの入力】
・中央明るさセンサ ・右センサ
・左センサ ・スイッチ 1
・スイッチ 2
【リモコンからの入力】
・スタートボタン(本体と共用)
・Forward ボタン ・Back ボタン
・Left ボタン ・Right ボタン
右タッチセンサ
中央センサ
(CDS)
左タッチセンサ
スタートボタン
スイッチ
(1)(2)
■センサ基板
※タッチセンサは本体底に表が下になって取りつくため、左右センサは逆になっている。
■リモコン接続状態
39
■リモコン ※スタートボタンは本体と共通。
各ブロックの説明
入力状態ブロック
入力状態は「ON」「OFF」の 2 種類となります。
ON
OFF
7-4 くりかえし・分岐
「くりかえしブロック」は 2 種類、「条件分岐(もし)ブロック」は 2 種類あります。
そのほかに「条件付きのくり返しブロック」と「くり返し中止(くり返しから抜ける)
ブロック」が各 1 種類あります。
無限ループブロック
くり返しブロック(回数)
条件分岐ブロッ
条件分岐ブロック
②
くり返しブロック
(条件式)
くり返し中止ブロック
40
各ブロックの説明
無限ループブロック(ずっとくりかえす)
無限ループブロックは電源を切るまで接続されたプログラムを繰り返し続けます。
電源を切るまで LED が
点滅し続けます。
くり返しブロック(回数)
「回数」を設定することでくり返し回数を決める事ができます。
点滅を 10 回くり返すと
プログラムは終了します。
41
各ブロックの説明
条件分岐(もし)ブロック
条件を設定してプログラムの流れを変える(分岐する)ブロックです。条件は入力設定
ブロックを使用します。
条件選定ブロックを接続して条件を決めます。
条件が成り立った時に実行するプログラムを作成します。
例として「FORWARD(前進)ボタン」を押した時に制御カーが前進するプログラム
を以下に示します。
条件分岐ブロックはもう一種類あります。条件に成り立つ時と成り立たない時で別々の
プログラムを実行するブロックです。ブロックは上か下かどちらか一方しか実行さず、
他方のブロックは実行されません。
条件式
ブロックA
条件式が『成り立つ』
場合には「ブロックA」
が実行され「ブロック
B」は実行されない。
ブロックB
条件式が『成り立たな
い』場合には「ブロッ
クB」が実行され「ブ
ロックA」は実行され
ない。
42
各ブロックの説明
それぞれの流れをブローチャートで書くと以下のようになります。
条件
YES
ブロック
NO
条件
YES
ブロックA
NO
ブロックB
くり返しブロック(条件式)
条件式を設定して、条件に合うあいだ繰り返すブロックです。
下の例は「Start ボタン」が押されるまで(OFF の状態の間は)右折を繰り返し、ボタ
ンが押されたら停止するプログラムです。
くり返す処理を何も指定しなければ、入力があるまで次の処理に進まないプログラムが
作成できます。(下の例では「Start ボタン」が押されるまで制御カーは動かない。)
43
各ブロックの説明
くり返し中止ブロック
条件を設定して無限ループを抜けるブロックです。条件分岐ブロックと組合わせて使い
ます。下の例では「Start ボタン」が押されれば、くり返しを中止し(無限ループを抜
け)制御カーを動かします。
7-5 待つ
今の状態を維持したまま次の命令を待つブロックです。時間設定は「0.1 秒単位」「1
ミリ秒単位(※)」「1 マイクロ秒単位(※)」で設定ができます。
※ 1 ミリ秒=0.001 秒、1 マイクロ秒=0.000001 秒
0.1 秒単位
1 ミリ秒単位
1 マイクロ秒単位
44
各ブロックの説明
7-6 変数
「変数」とは、プログラムで使用する数値を自由に読み書きできるためのものです。
使用例として「ボタンを押した回数やセンサーに反応があった回数を記録して、○○回
目に停止する」といったプログラムを作成する事ができます。また、同じ値を一度に変
更する場合にも便利です。
数値ブロック
変数ブロック
変数代入ブロック
変数を使用する場合、まず最初に名前を付ける必要があります。名前は 0~9、a~z、A
~Z の英数字でなければなりません。また大文字と小文字は別の名前と判断されるので
注意が必要です。
変数に名前を代入するには「変
数代入ブロック」を使用します。
別の変数として判断される
変数「Hensu」に
「5」が代入される
左のプログラムは変数「Hensu」
に5を代入し、くり返し回数に
「Hensu」を指定してます。くり
返す動作は LED の点滅です。
つまり、LED を「Hensu」回(5
回)点滅させるプログラムになり
ます。
45
各ブロックの説明
7-7 関数
関数は同じ処理を一つにまとめる事ができるブロックです。
下の例では LED を 5 回点滅させる処理を一つの関数にまとめています。
LED の点滅処理を関数「Blink」にまとめて
置き換えています。
関数ブロックは「呼び出しブロック」と処理の元となる「定義ブロック」の 2 種類があ
ります。
関数定義ブロック
関数呼び出しブロック
46
各ブロックの説明
関数定義ブロック
まとめる処理(プログラム)を作成するブロックです。関数には名前を付ける必要があ
ります。名前は 0~9、a~z、A~Z の英数字でなければなりません。また大文字と小文
字は別の名前と判断されるので注意が必要です。
関数名を付ける
処理を作成する
関数呼び出しブロック
定義ブロックで作成した関数は「呼び出しブロック」で呼び出し使用します。呼び出し
ブロックの関数名は定義ブロックで付けた名前と同じにします。
全体の構成は以下のようになります。
47
各ブロックの説明
7-8 演算
演算のブロック群は以下の 5 種類で構成されています。
四則演算ブロック
四則演算ブロックは以下の 5 種類となります。
主に変数ブロックと組合わせて使用します。
48
各ブロックの説明
等号、不等号ブロック
等号、不等号ブロックは以下の 6 種類となります。
基本的な使い方は「入力設定ブロック(P39)」と同じです。
集合ブロック
集合ブロックは以下の 2 種類となります。
<用法>
リモコンの
「Right ボタン」と「LEFT ボタン」が
どちらも押されている状態
「Right ボタン」と「LEFT ボタン」の
どちらか一方が押されている状態
49
各ブロックの説明
補集合ブロック
補集合ブロックは条件を否定するブロックで以下の 1 種類となります。
<用法>
乱数ブロック
乱数ブロックはランダムな数字を設定するブロックで以下の 1 種類となります。
設定した数字の中からランダムに数字を決定します。但し、設定した数字は含まれませ
ん。「10」と設定した場合「0~9」までの 10 個の数字が対象となります。
<プログラム例>
LED を
点滅させる
プログラム
LED を点滅させる回数を乱数ブロックでランダムに設定しています。
乱数ブロックに「10」を設定しているので、乱数の範囲は「0~9」になります。
※乱数の結果が「0」の場合は LED は点滅しません。
50
各ブロックの説明
7-9 音
制御カーの圧電ブザーから音を鳴らすためのブロックです。
※音ブロックはメモリ容量を大変多く消費するので、多く使用するとプログラムが書き
込めなくなる可能性があります。
音ブロック
(音階・音符指定)
音ブロック
(周波数・時間指定)
テンポ設定ブロック
休符ブロック
音階ブロック
音符ブロック
音ブロック
音ブロックには1音の高さと長さを音階と音符で指定するタイプと、周波数と時間で指
定するタイプがあります。音の長さを音符で指定するとテンポ変更(事項にて説明)に
影響されますが、時間でしてした場合は影響されません。
※音階と周波数の対応は「10-1 音階・周波数対応表」を参照ください。
音階と音符で指定
周波数と時間で指定
51
各ブロックの説明
テンポ設定ブロック
音のテンポ(音の長さ)を設定するブロックです。値を大きくするほど鳴る時間は短く
なります。音ブロックで長さ音符で設定した音はこのブロックで設定したテンポに沿っ
た長さになります。長さを時間で指定した場合、このブロックの影響は受けません。テ
ンポはプログラムの途中で変更する事も可能です。
【注】テンポの変数名は変更しないでください。
変数名は変更不可
値を大きくするほど
テンポは速くなる。
休符ブロック
休符(音の出ない時間)を設定するつブロックです。
標準では音符で指定するようになっていますが、数字ブロックを使った時間指定も可能
です。長さを音符で指定するとテンポ変更(事項にて説明)に影響されますが、時間で
してした場合は影響されません。
音符で指定 時間で指定
音階ブロック
音階は半音を含み2オクターブ(下の「ラ」から上の「ミ」ま
で)が指定できます。
音符ブロック
音符は「全休符」「二分音符」「付点二分音符」「四分音符」
「付点四分音符」「八分音符」「付点八分音符」「16 分音符」
「付点 16 分音符」の 9 種類になります。
52