この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
ch_protch [2018/10/13 20:24] klab |
ch_protch [2019/03/15 19:21] klab |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | # プロッチを動かしてみよう | + | # プロッチを使ってみよう |
- | ## プロッチを接続モードで動かしてみよう | + | LEDや各種センサ、通信機能を持つロボット「**プロッチ**」を使ってプログラムで操作してみよう。 |
- | ここでは、ドリトルからプロッチを独立モードで動かす方法について解説する。独立モードでは、ドリトルで作成した制御プログラムをプロッチに転送し、プロッチ単体での動作が可能である。 | + | |
- | ### ドリトルからプログラムを転送する | + | ## 1. プロッチについて |
- | ドリトルで記述したプログラムは次の手順で転送する。 | + | プロッチは、山崎教育システム株式会社と株式会社モノ・グラムが開発・販売する教育教材である。LEDの点灯や、センサを利用した各種計測、モータの制御を行うことができる。またプロッチを2台使用することにより2つのパソコン間での文字や数字のやりとりをするプログラムを作ることもできる。\\ |
- | * ドリトルの編集画面でプログラムを記述する。 | + | なお、ドリトルでは「オリジナルプロッチ」に対応している。((プロッチの仕様については同社のサイト(http://protch.jp/)に詳しく掲載されている。)) |
- | * プログラムを実行すると「protchへの転送を実行しますか?」と表示されるので「はい(Y)」を選択する。((「Windowsセキュリティの重要な警告」が表示された場合は「アクセスを許可する(A)」を選択する。)) | + | |
- | {{:pasted:protch_stand2.png}} | + | |
- | * 「ポートを選択してください。」と表示されるのでプロッチを接続してるCOMポートを選択する。((COM*の部分は環境によって異なる。)) | + | |
- | {{:pasted:protch_comport.png}} | + | |
- | * プログラムの転送が行われ 「転送完了」が表示されるまで待つ。((5秒程度かかる。)) | + | |
- | {{:pasted:protch_remote2.png}} | + | |
+ | ### 1.1 プロッチの各部品の名称 | ||
+ | プロッチで利用できるセンサ、アクチュエータ、拡張パーツを下図や表に示す。なお、図については、センサを赤色、アクチュエータを青色、拡張パーツを緑色、電源やUSBなどプログラムの実行に必要な部品を黒色で示している。 | ||
- | ### 動作確認と操作方法について | + | {{:pasted:protch.png}} |
- | ここでは、動作環境が正しく準備できたかの確認と一緒に操作方法について説明する。動作確認には、次のプログラムを使用する。 | + | |
- | <code> | + | |
- | システム!"protch"使う。 | + | |
- | 最初に実行=「 | + | |
- | プロッチ!テスト動作。 | + | |
- | 」。 | + | |
- | プロッチ!転送。 | + | |
- | </code> | + | |
- | 上記のプログラムを転送し、下図のようにプロッチのスイッチを一度押すことで転送したプログラムが実行される。左ライトが一回点灯すればOKである。 | + | ^部品名^説明^ |
+ | |電源ボタン|プロッチの電源をオン・オフする| | ||
+ | |リセットボタン|プロッチに書き込まれたプログラムをもう一度実行する| | ||
+ | |外部電源|サーボモータの制御に必要な外部電源を接続する| | ||
+ | |USB|パソコンとプロッチをUSBポートで接続し、パソコンからプログラムの転送やプロッチを制御する| | ||
+ | |ライト|LEDライトを点灯、消灯する| | ||
+ | |スイッチ|スイッチのON、OFFを検出し、障害物の衝突を検出したり、スイッチをコントローラにしたりする| | ||
+ | |光センサ|センサの周辺の明るさを計測する| | ||
+ | |ブザー|音階や音長を指定して、ブザーで演奏する| | ||
+ | |ラインセンサ|赤外線の反射量を計測し、計測値からラインの白と黒を判断できる| | ||
+ | |モータ|左右のタイヤを回転させて、プロッチを動かす| | ||
+ | |サーボモータ|指定した角度にモータを制御する。※利用する場合、外部電源が必要になる| | ||
+ | |超音波センサ|超音波を出力し、壁や障害物から跳ね返ってくるまでの時間から距離を計測する| | ||
+ | |通信端子|プロッチ2台の通信端子をケーブルで接続し、それぞれをパソコンとUSBで接続して、文字や数値のやり取りをする| | ||
- | {{:pasted:protch_stand.jpg}} | + | ## 2. ドリトルとプロッチの導入手順 |
+ | ドリトルでプロッチを制御するには、ドリトルのダウンロードの他、プロッチエディタ及びUSBデバイスドライバのインストールが必要になる。以下がインストールの手順である。なお、ソフトウェアとドライバのインストールを行うため、OSの管理者権限が必要となる場合がある。 | ||
+ | - **プロッチエディタをインストールする** | ||
+ | * 株式会社山崎教育システムのプロッチ公式サイト(http://protch.jp/#section2)の指示に沿ってインストールを行う。 | ||
+ | - **プロッチのデバイスドライバのインストールする** | ||
+ | * プロッチの電源を入れた状態でPCとプロッチをUSBケーブルで接続する。自動的にドライバがインストールされる。 | ||
+ | * 「Prolific USB-to-Serial Comm Port (COM*)((COM*の部分は環境によって異なる。)) デバイスドライバーソフトウェアが正しくインストールされました。」と表示される。\\写真を貼る。\\ | ||
+ | - **ドリトルをインストールする** | ||
+ | * ドリトルのサイト(http://dolittle.eplang.jp)のダウンロードから最新版のWindows用のドリトルをダウンロードして任意のフォルダに展開する。(「C:」直下が好ましい) | ||
+ | - **追加パッケージをダウンロードする** | ||
+ | * ダウンロードから追加パッケージ「ロボット制御ライブラリ」をダウンロードし、ファイルを解凍する。 | ||
+ | * 「robotPS」フォルダ内のファイル(iniファイル,exeファイル等)を、ドリトルのルートフォルダ(dolittle.jarやdolittle.batが置いてあるフォルダ)に上書き保存する。{{:pasted:robotps_install.png}} | ||
+ | - **ドリトルの起動** | ||
+ | * エクスプローラからdolittle.bat(またはdolittle_tab.bat)を実行する。((「発行元を確認できませんでした。このソフトウェアを実行しますか?」のダイアログが出る場合は「このファイルを開く前に常に警告する(W)」のチェックを外してから「実行(R)」を選択する。)) | ||
- | ### プロッチのプログラムの基本 | + | ## 3. ドリトルによるプロッチの制御方法(利用方法) |
- | ドリトルからプロッチを制御するプログラムは、次の形で記述する。先頭の行では、プロッチを**使う**プログラムを作成することを示している。以後、プロッチ本体を表す「プロッチ」((「protch」「プロ」も使用できる。))というオブジェクトを使うことができるようになる。 | + | ドリトルによるプロッチの制御は通信モードと組み込みモードがある。それぞれの制御方法には、下記の特徴がある。 |
- | <code> | + | ^ ^特徴^開発例^ |
- | システム!"protch"使う。 | + | |通信モード|USBケーブルを接続して、ドリトルとプロッチが通信しながらプログラムを実行する。 \\ ・プロッチが計測したセンサの値をPC画面で確認可能\\ ・ドリトルのGUIプログラミングと連携できる \\ ・ケーブルの接続が必須|・プロッチのプログラミング練習(動作確認) \\ ・プロッチセンサのモニタープログラム \\ ・プロッチコントローラプログラム \\ など| |
- | 最初に実行=「 | + | |組み込みモード|プロッチにすべてのプログラムを書き込み、プロッチ単独で動作する。 \\ ・プログラム実行時にケーブルの接続が不要 \\ ・電源をONにするだけで、書き込んだプログラムを実行可能 \\ ・センサの計測値をPCで確認することはできない|・迷路脱出ロボット \\ など |
- | ・・・ | + | |:::|:::|:::| |
- | 」。 | + | |
- | 繰り返し実行=「 | + | |
- | ・・・ | + | |
- | 」。 | + | |
- | プロッチ!転送。 | + | |
- | </code> | + | |
- | **最初に実行**の「...」の部分には、一度だけ実行したいプログラムを書く。 | + | |
- | **繰り返し実行**の「...」の部分には、何度も繰り返して実行したいプログラムを書く。 | + | 実際の開発にあたって、最初に通信モードでセンサの性質やアクチュエータの動作を確認しながら、プログラムを作成し、めどが立ってから組み込みモードでロボットを単独で動作させることが考えられる。 |
- | + | ||
- | **転送**を実行すると、プログラムがコンパイルされ、プロッチに転送される。 | + | |
- | + | ||
- | ### LEDの利用 | + | |
- | プロッチに搭載しているLEDは**点灯**や**消灯**を使うことで制御できる。プロッチにはLEDが2つ搭載しているため、左側のLEDは「**左ライト**」、右側のLEDは「**右ライト**」というオブジェクトがある。 | + | |
- | + | ||
- | **LEDの命令一覧** | + | |
- | ^ 命令 ^ 機能 ^ | + | |
- | |点灯 | LEDを点灯する | | + | |
- | |消灯 | LEDを消灯する | | + | |
- | + | ||
- | 次のプログラムでは、左右のLEDを1秒間点灯し、消灯するプログラムである。 | + | |
- | <code> | + | |
- | システム!"protchrm"使う。 | + | |
- | + | ||
- | 最初に実行=「 | + | |
- | 左ライト!点灯。 | + | |
- | 右ライト!点灯。 | + | |
- | プロッチ!1 待つ。 | + | |
- | 左ライト!消灯。 | + | |
- | 右ライト!消灯。 | + | |
- | 」。 | + | |
- | プロッチ!転送。 | + | |
- | </code> | + | |
- | + | ||
- | ### スイッチの利用 | + | |
- | プロッチに搭載しているスイッチは、**接触?**を使うことでスイッチのONとOFFを検出できる。スイッチは左右に搭載しているので左側のスイッチである「左スイッチ」、右側のスイッチである「右スイッチ」というオブジェクトがある。 | + | |
- | + | ||
- | **スイッチの命令一覧** | + | |
- | ^ 命令 ^ 機能 ^ | + | |
- | |読む | スイッチの入力を0か1で取得する | | + | |
- | |接触? | スイッチの入力を0か1で取得する | | + | |
- | + | ||
- | 次のプログラムでは、左スイッチが押されている時に左ライトが点灯し、押されていないときは消灯する。プログラムは繰り返し実行に書いているため、何度の実行される。 | + | |
- | + | ||
- | <code> | + | |
- | システム! "protchrm" 使う。 | + | |
- | 繰り返し実行=「 | + | |
- | 「左スイッチ! 接触?」! なら「 | + | |
- | 左ライト! 点灯。 | + | |
- | 」そうでなければ「 | + | |
- | 左ライト! 消灯。 | + | |
- | 」実行。 | + | |
- | 」。 | + | |
- | プロッチ!転送。 | + | |
- | </code> | + | |
- | 下図は、プロッチが箱に衝突し、左スイッチに接触しているので左ライトが点灯している。 | + | |
- | {{:pasted:protch_switch.jpg}} | + | |
- | + | ||
- | ### 光センサの利用 | + | |
- | プロッチに搭載している光センサは**明るさ?**を使うことで周辺の光量を取得できる。光センサは左右に搭載しているので左側の光センサである「左光センサ」、右側の光センサである「右光センサ」というオブジェクトがある。 | + | |
- | + | ||
- | **光センサの命令一覧** | + | |
- | ^ 命令 ^ 機能 ^ | + | |
- | |読む | 光量を0〜255の範囲で取得する。暗い程、取得する値は大きくなる | | + | |
- | |明るさ? | 光量を0~255の範囲で取得する。暗い程、取得する値は大きくなる| | + | |
- | + | ||
- | 次のプログラムでは、周辺の光量が100より大きい時に左のライトが点灯する。プログラムは繰り返し実行に書いているため、何度の実行される。 | + | |
- | + | ||
- | <code> | + | |
- | システム! "protchrm" 使う。 | + | |
- | 繰り返し実行=「 | + | |
- | 「(左光センサ! 明るさ?)>100」! なら「 | + | |
- | 左ライト! 点灯。 | + | |
- | 」そうでなければ「 | + | |
- | 左ライト! 消灯。 | + | |
- | 」実行。 | + | |
- | 」。 | + | |
- | プロッチ!転送。 | + | |
- | </code> | + | |
- | 下図は、左光センサを手で隠すと暗くなるのでLEDが点灯している。 | + | |
- | {{:pasted:protch_light.png}} | + | |
- | + | ||
- | ### サーボモータの利用 | + | |
- | プロッチにはサーボモータを接続するための端子がある。サーボモータは**角度設定**を使うことで角度を指定することができる。サーボモータは左右に接続でき、左側の端子の「左サーボモータ」、右側の端子の「右サーボモータ」というオブジェクトがある。サーボモータの接続方法は下図のとおりである。サーボモータを利用するときは、外部電源に電池ボックスを接続する必要がある。 | + | |
- | + | ||
- | {{:pasted:protch_servo.jpg}} | + | |
- | + | ||
- | + | ||
- | **サーボモータの命令一覧** | + | |
- | ^ 命令 ^ 機能 ^ | + | |
- | |角度設定 |0度~180度の間で角度を指定する| | + | |
- | + | ||
- | 次のプログラムでは、左右のサーボモータの角度を1秒ごとに180度と0度に動作する。 | + | |
- | <code> | + | |
- | システム!"protchrm"使う。 | + | |
- | 最初に実行=「 | + | |
- | 左サーボモータ!180 角度設定。 | + | |
- | 右サーボモータ!180 角度設定。 | + | |
- | プロ!1 待つ。 | + | |
- | 左サーボモータ!0 角度設定。 | + | |
- | 右サーボモータ!0 角度設定。 | + | |
- | 」。 | + | |
- | プロッチ!転送。 | + | |
- | </code> | + | |
- | + | ||
- | ### モータの利用 | + | |
- | プロッチには左右にタイヤにつながったモータが搭載している。次のプログラムでは、1秒ごとに前進、左折、右折、後進、停止をしている。 | + | |
- | + | ||
- | **モータ**の命令一覧 | + | |
- | ^ 命令 ^ 機能 ^ | + | |
- | |前進 | 左右のモータを正回転する| | + | |
- | |後進 | 左右のモータを逆回転する | | + | |
- | |停止 | 左右のモータを停止する | | + | |
- | |左折 | 右側のモータを正回転する | | + | |
- | |右折 | 左側のモータを正回転する | | + | |
- | |左回り | 右側のモータが標準の速度で正回転し、左側のDCモータが標準の速度/5の速度で正回転する | | + | |
- | |右回り | 左側のモータが標準の速度で正回転し、右側のDCモータが標準の速度/5の速度で正回転する | | + | |
- | |速度設定 | DC モータの速度を0 から255 までの値で設定する。標準では100になっている | | + | |
- | + | ||
- | <code> | + | |
- | システム! "protchrm" 使う。 | + | |
- | 最初に実行=「 | + | |
- | モータ! 1 前進。 | + | |
- | モータ! 1 左折。 | + | |
- | モータ! 1 右折。 | + | |
- | モータ! 1 後進。 | + | |
- | モータ! 1 停止。 | + | |
- | 」。 | + | |
- | プロッチ!転送。 | + | |
- | </code> | + | |
- | + | ||
- | ### ラインセンサを使ったライントレース | + | |
- | ライントレースカーは左右のDCモーターを使い、地面に描かれた線のコースに沿って動く。プロッチに搭載しているラインセンサを利用することで赤外線の反射量の値から線の上にいるかどうかを判断できる。ラインセンサは**読む**を使用することで、0〜255の値で検出できる。ラインセンサは左右に一つずつ搭載しており、左側のセンサの「左ラインセンサ」、右側のセンサの「右ラインセンサ」というオブジェクトがある。 | + | |
- | + | ||
- | **ラインセンサ**の命令一覧 | + | |
- | ^ 命令 ^ 機能 ^ | + | |
- | |読む |赤外線の反射量を0〜255の範囲で取得する| | + | |
- | |明るさ? |赤外線の反射量を0〜255の範囲で取得する| | + | |
- | + | ||
- | 次のプログラムでは、左右のラインセンサを比較し、線の上にいなければ右折し、線の上にいれば左折する。 | + | |
- | + | ||
- | <code> | + | |
- | システム!"protchrm" 使う。 | + | |
- | + | ||
- | 繰り返し実行=「 | + | |
- | 「(左ラインセンサ!読む)<(右ラインセンサ!読む)」!なら「 | + | |
- | モータ!左回り。 | + | |
- | 」そうでなければ「 | + | |
- | モータ!右回り。 | + | |
- | 」実行。 | + | |
- | 」。 | + | |
- | プロッチ!転送。 | + | |
- | </code> | + | |
- | + | ||
- | {{:pasted:protch_line.png}} | + | |
- | + | ||
- | ### 距離センサの利用 | + | |
- | プロッチでは距離センサを利用可能である。距離センサは**距離?**を使うことで、プロッチの正面にあるモノまでの距離をmmで取得できる。次のプログラムでは、障害物が近くにあると停止する。 | + | |
- | + | ||
- | **距離センサ**の命令一覧 | + | |
- | ^ 命令 ^ 機能 ^ | + | |
- | |読む |距離センサの計測値をmmで取得する | | + | |
- | |距離? |距離センサの計測値をmmで取得する | | + | |
- | + | ||
- | <code> | + | |
- | システム!"protchrm"使う。 | + | |
- | 繰り返し実行=「 | + | |
- | 「(距離センサ!距離?)<40」!なら「 | + | |
- | モータ!1 停止。 | + | |
- | 」そうでなければ「 | + | |
- | モータ!前進。 | + | |
- | 」実行。 | + | |
- | 」。 | + | |
- | プロッチ!転送。 | + | |
- | </code> | + | |
- | {{:pasted:protch_distance.png}} | + | |
- | + | ||
- | ###音楽演奏 | + | |
- | プロッチに搭載しているブザーを利用して音楽の演奏が可能である。((現在、音楽演奏の機能は独立モードでのみ利用可能))次のプログラムでは、ブザーを使ってドレミの音階を鳴らしている。 | + | |
- | + | ||
- | **ブザーの命令一覧** | + | |
- | ^命令^機能^ | + | |
- | |演奏|ブザーの出力を音階に合わせて順番に奏でる| | + | |
- | + | ||
- | <code> | + | |
- | システム! "protch" 使う。 | + | |
- | 最初に実行=「 | + | |
- | ブザー! "ドレミ" 演奏。 | + | |
- | 」。 | + | |
- | プロ! 転送。 | + | |
- | </code> | + | |
- | + | ||
- | また、ブザーを用いてメロディの演奏が可能である。((現在、「音符」「オクターブ」の対応を進めている))ここで | + | |
- | は、譜面に相当するメロディオブジェクトに旋律を書き込み、そ | + | |
- | れを演奏する。次のプログラムでは、「きらきらぼし」という名 | + | |
- | 前のメロディオブジェクトを生成し、「"..."」の形で旋律を追加し | + | |
- | てから、ブザーに演奏させている。 | + | |
- | + | ||
- | **メロディの命令一覧** | + | |
- | ^命令^機能^ | + | |
- | |作る|配列を作る| | + | |
- | |追加|作った配列に音階を挿入する| | + | |
- | + | ||
- | <code> | + | |
- | システム!"protch"使う。 | + | |
- | 最初に実行=「 | + | |
- | きらきらぼし=メロディ! 作る。 | + | |
- | きらきらぼし! "ドドソソララソ~ファファミミレレド~" 追加。 | + | |
- | きらきらぼし! "ソソファファミミレ~ソソファファミミレ~" 追加。 | + | |
- | きらきらぼし! "ドドソソララソ~ファファミミレレド~" 追加。 | + | |
- | ブザー!(きらきらぼし) 演奏。 | + | |
- | 」。 | + | |
- | プロ! 転送。 | + | |
- | + | ||
- | </code> | + | |
+ | * **[[ch_protchremote|通信モードによる制御の説明はこちら]]**. | ||
+ | * **[[ch_protchembed|組み込みモードによる制御の説明はこちら]]**. |