プロッチというデバイスを使って、LEDやセンサなどの入出力や通信機能を使ってチャットプログラミングをしてみよう。プロッチを使用するためには、ダウンロード版のドリトルが必要になる。
プロッチは、株式会社山崎教育システムが開発したロボット教材である。LEDの点灯や、センサの計測、モータの制御を行うことができ、プロッチを2台使用することで文字の交換をするチャットプログラミングを行うことができる。ドリトルでは、「オリジナルプロッチ」という製品で動作の確認を行った。1)下図には、プロッチに搭載しているセンサやモータの配置図を示す。2)
ドリトルからプロッチを動かす方法は2つある。
以下にそれぞれのモードでできること、できないことを示す。
接続モード | 独立モード | |
---|---|---|
LEDの利用 | ◯ | ◯ |
センサの利用 | ◯ | ◯ |
モータの利用 | ◯ | ◯ |
ブザーの利用 | ×3) | ◯ |
チャットプログラミング | ◯ | × |
画面出力 | ドリトルの画面にセンサの入力値を表示することが可能 | × |
ロボットを動かせる場所 | パソコンからUSBケーブルが届く範囲で動かすことが可能 | パソコンから離れた場所でも動かすことが可能 |
Windowsが導入されたコンピュータでドリトルとプロッチを通信するには、以下の設定をおこなう。このとき、デバイスドライバのインストールを行うため、OSの管理者権限が必要となる場合がある。なお、Windows7でのインストールを例として以下の手順で設定する。
ここでは、ドリトルからプロッチを接続モードで動かす方法について解説する。接続モードでは、ドリトルからプロッチを制御するための通信プログラムを転送しておく必要がある。6)
通信プログラムの転送の手順について解説する。
システム!"protchrm"使う。 プロッチ!通信プログラム転送。
通信プログラムが転送されると下図のようにプロッチが赤色の点灯状態になる。10)
ここでは、動作環境が正しく準備できたかの確認と一緒に操作方法について説明する。動作確認には、次のプログラムを使用する。
システム!"protchrm"使う。 最初に実行=「 プロッチ!動作確認。 」。
プロッチのプログラムを実行すると下図のように「動作開始」ボタンと「動作終了」ボタンが現れる。
上記のプログラムを実行した場合、左ライトが一回点灯すればOKである。最後に「動作終了」ボタンを押して終了することに注意する。
ドリトルからプロッチを制御するプログラムは、次の形で記述する。先頭の行では、プロッチを使うプログラムを作成することを示している。以後、プロッチ本体を表す「プロッチ」11)というオブジェクトを使うことができるようになる。
システム!"protchrm"使う。 最初に実行=「 ・・・ 」。 繰り返し実行=「 ・・・ 」。
最初に実行の「…」の部分には、一度だけ実行したいプログラムを書く。
繰り返し実行の「…」の部分には、何度も繰り返して実行したいプログラムを書く。
プロッチに搭載しているLEDは点灯や消灯を使うことで制御できる。プロッチにはLEDが2つ搭載しているため、左側のLEDは「左ライト」、右側のLEDは「右ライト」というオブジェクトがある。
LEDの命令一覧
命令 | 機能 |
---|---|
点灯 | LEDを点灯する |
消灯 | LEDを消灯する |
次のプログラムでは、左右のLEDを1秒間点灯し、消灯するプログラムである。
システム!"protchrm"使う。 最初に実行=「 左ライト!点灯。 右ライト!点灯。 プロッチ!1 待つ。 左ライト!消灯。 右ライト!消灯。 」。
プロッチに搭載しているスイッチは、接触?を使うことでスイッチのONとOFFを検出できる。スイッチは左右に搭載しているので左側のスイッチである「左スイッチ」、右側のスイッチである「右スイッチ」というオブジェクトがある。
スイッチの命令一覧
命令 | 機能 |
---|---|
読む | スイッチの入力を0か1で取得する |
接触? | スイッチの入力を0か1で取得する |
次のプログラムでは、左スイッチが押されている時に左ライトが点灯し、押されていないときは消灯する。プログラムは繰り返し実行に書いているため、何度の実行される。
システム! "protchrm" 使う。 繰り返し実行=「 「左スイッチ! 接触?」! なら「 左ライト! 点灯。 」そうでなければ「 左ライト! 消灯。 」実行。 」。
プロッチに搭載している光センサは明るさ?を使うことで周辺の光量を取得できる。光センサは左右に搭載しているので左側の光センサである「左光センサ」、右側の光センサである「右光センサ」というオブジェクトがある。
光センサの命令一覧
命令 | 機能 |
---|---|
読む | 光量を0〜255の範囲で取得する。暗い程、取得する値は大きくなる |
明るさ? | 光量を0~255の範囲で取得する。暗い程、取得する値は大きくなる |
次のプログラムでは、周辺の光量が100より大きい時に左のライトが点灯する。プログラムは繰り返し実行に書いているため、何度の実行される。
システム! "protchrm" 使う。 繰り返し実行=「 「(左光センサ! 明るさ?)>100」! なら「 左ライト! 点灯。 」そうでなければ「 左ライト! 消灯。 」実行。 」。
プロッチにはサーボモータを接続するための端子がある。サーボモータは角度設定を使うことで角度を指定することができる。サーボモータは左右に接続でき、左側の端子の「左サーボモータ」、右側の端子の「右サーボモータ」というオブジェクトがある。サーボモータの接続方法は下図のとおりである。サーボモータを利用するときは、外部電源に電池ボックスを接続する必要がある。
サーボモータの命令一覧
命令 | 機能 |
---|---|
角度設定 | 0度~180度の間で角度を指定する |
次のプログラムでは、左右のサーボモータの角度を1秒ごとに180度と0度に動作する。
システム!"protchrm"使う。 最初に実行=「 左サーボモータ!180 角度設定。 右サーボモータ!180 角度設定。 プロ!1 待つ。 左サーボモータ!0 角度設定。 右サーボモータ!0 角度設定。 」。
プロッチには左右にタイヤにつながったモータが搭載している。次のプログラムでは、1秒ごとに前進、左折、右折、後進、停止をしている。
モータの命令一覧
命令 | 機能 |
---|---|
前進 | 左右のモータを正回転する |
後進 | 左右のモータを逆回転する |
停止 | 左右のモータを停止する |
左折 | 右側のモータを正回転する |
右折 | 左側のモータを正回転する |
左回り | 右側のモータが標準の速度で正回転し、左側のDCモータが標準の速度/5の速度で正回転する |
右回り | 左側のモータが標準の速度で正回転し、右側のDCモータが標準の速度/5の速度で正回転する |
速度設定 | DC モータの速度を0 から255 までの値で設定する。標準では100になっている |
システム! "protchrm" 使う。 最初に実行=「 モータ! 1 前進。 モータ! 1 左折。 モータ! 1 右折。 モータ! 1 後進。 モータ! 1 停止。 」。
ライントレースカーは左右のDCモーターを使い、地面に描かれた線のコースに沿って動く。プロッチに搭載しているラインセンサを利用することで赤外線の反射量の値から線の上にいるかどうかを判断できる。ラインセンサは読むを使用することで、0〜255の値で検出できる。ラインセンサは左右に一つずつ搭載しており、左側のセンサの「左ラインセンサ」、右側のセンサの「右ラインセンサ」というオブジェクトがある。
ラインセンサの命令一覧
命令 | 機能 |
---|---|
読む | 赤外線の反射量を0〜255の範囲で取得する |
明るさ? | 赤外線の反射量を0〜255の範囲で取得する |
次のプログラムでは、左右のラインセンサを比較し、線の上にいなければ右折し、線の上にいれば左折する。
システム!"protchrm" 使う。 繰り返し実行=「 「(左ラインセンサ!読む)<(右ラインセンサ!読む)」!なら「 モータ!左回り。 」そうでなければ「 モータ!右回り。 」実行。 」。
プロッチでは距離センサを利用可能である。距離センサは距離?を使うことで、プロッチの正面にあるモノまでの距離をmmで取得できる。次のプログラムでは、障害物が近くにあると停止する。
距離センサの命令一覧
命令 | 機能 |
---|---|
読む | 距離センサの計測値をmmで取得する |
距離? | 距離センサの計測値をmmで取得する |
システム!"protchrm"使う。 繰り返し実行=「 「(距離センサ!距離?)<40」!なら「 モータ!1 停止。 」そうでなければ「 モータ!前進。 」実行。 」。
プロッチを2台使うことでチャットプログラミングが可能である。チャットプログラムは、ドリトルの画面に入力した文字を送信したり、受信した文字をドリトルの画面に表示したりするため接続モードでのみ利用可能な機能である。チャットプログラミングはシリアルオブジェクトの出力で文字を送信し、読むで送信された文字を取得できる。チャットプログラムをするためにプロッチ2台を下図のように線で繋ぐ必要がある。
シリアルオブジェクトの命令一覧
命令 | 機能 |
---|---|
出力 | 文字を出力します |
読む | 送信された文字を取得します |
メッセージの送信には、シリアルオブジェクトを利用する。次のプログラムでは、「こんにちわ」を送信している。
システム! "protchrm" 使う。 最初に実行=「 シリアル!"こんにちわ"出力。 」。
メッセージの送信には、シリアルオブジェクトを利用する。次のプログラムでは、「こんにちわ」を送信している。
システム! "protchrm" 使う。 受信ラベル=ラベル!""作る。 繰り返し実行=「 受信ラベル!(シリアル!読む)書く。 」。
システム!"protchrm"使う。 最初に実行=「 送信フィールド=フィールド! 作る。 送信ボタン=ボタン!"送信"作る。 受信エリア=テキストエリア! 作る。 送信ボタン:動作=「シリアル! (送信フィールド! 読む)出力」。 前回受信値="". 「 受信値=シリアル! 読む。 「前回受信値! =受信値」! なら「 受信エリア! (受信値)書く。 」実行。 前回受信値=受信。 プロ!0.1 待つ。 」! 1000 繰り返す。 」。