この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ch_protchrm [2018/10/20 19:14] klab |
ch_protchrm [2019/03/15 16:15] (現在) klab |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
# プロッチを使ってみよう | # プロッチを使ってみよう | ||
- | LEDや各種センサ、通信機能を持つロボット「**プロッチ**」を使ってプログラムで操作してみよう。プロッチのプログラミングは、ダウンロード版のドリトルのみ対応している。 | + | LEDや各種センサ、通信機能を持つロボット「**プロッチ**」を使ってプログラムで操作してみよう。 |
## プロッチについて | ## プロッチについて | ||
- | プロッチは、山崎教育システム株式会社が開発したロボット教材である。LEDの点灯や、センサを利用した各種計測、モータの制御を行うことができる。またプロッチを2台使用することによりパソコン間での文字のやりとり(チャット)などのプログラムを作ることが可能である。現在ドリトルで対応しているプロッチは「オリジナルプロッチ((プロッチの仕様については同社のサイト(http://protch.jp/)に詳しく掲載されている。))」という製品である。 | + | プロッチは、山崎教育システム株式会社と株式会社モノ・グラムが開発・販売する教育教材である。LEDの点灯や、センサを利用した各種計測、モータの制御を行うことができる。またプロッチを2台使用することにより2つのパソコン間での文字や数字のやりとりをするプログラムを作ることもできる。\\ |
+ | なお、ドリトルでは「オリジナルプロッチ」に対応している。((プロッチの仕様については同社のサイト(http://protch.jp/)に詳しく掲載されている。)) | ||
### プロッチの各部品の名称 | ### プロッチの各部品の名称 | ||
- | プロッチは標準でセンサが6つ、LEDライトが2つ、モータが2つ、ブザーが1つ搭載している。また、拡張パーツには距離センサ、サーボモータ、通信コードがある。それぞれの配置を下図((赤色:センサ類、青色:モータ類、緑色:拡張パーツ、黒色:ロボットを動かすために必要な部分))に示す。 | + | プロッチで利用できるセンサ、アクチュエータ、拡張パーツを下図や表に示す。なお、図については、センサを赤色、アクチュエータを青色、拡張パーツを緑色、電源やUSBなどプログラムの実行に必要な部品を黒色で示している。 |
{{:pasted:protch.png}} | {{:pasted:protch.png}} | ||
- | |||
- | 各部品の説明を下表に示す。 | ||
^部品名^説明^ | ^部品名^説明^ | ||
- | |電源ボタン|プロッチを起動するボタン。プロッチを動かすときは電源を入れる必要がある| | + | |電源ボタン|プロッチの電源をオン・オフする| |
- | |リセットボタン|プロッチに書き込まれたプログラムをもう一度実行するボタン| | + | |リセットボタン|プロッチに書き込まれたプログラムをもう一度実行する| |
- | |外部電源|サーボモータを利用する際に必要になる| | + | |外部電源|サーボモータの制御に必要な外部電源を接続する| |
- | |USBポート|パソコンとUSBを接続するためのポート。プログラムの転送やプロッチを動かすときに接続する必要がある| | + | |USB|パソコンとプロッチをUSBポートで接続し、パソコンからプログラムの転送やプロッチを制御する| |
- | |ライト|LEDライトを点灯、消灯ができる| | + | |ライト|LEDライトを点灯、消灯する| |
- | |スイッチ|スイッチのON、OFFを検出できる。障害物の衝突を検出したり、スイッチをコントローラにしたりできる| | + | |スイッチ|スイッチのON、OFFを検出し、障害物の衝突を検出したり、スイッチをコントローラにしたりする| |
- | |光センサ|センサの周辺の明るさを計測できる| | + | |光センサ|センサの周辺の明るさを計測する| |
- | |ブザー|音を出力できる。音の音階に合ったブザー音がなる。| | + | |ブザー|音階や音長を指定して、ブザーで演奏する| |
- | |ラインセンサ|赤外線の反射量を計測できる。計測値からラインの白と黒を判断できる| | + | |ラインセンサ|赤外線の反射量を計測し、計測値からラインの白と黒を判断できる| |
- | |モータ|左右のモータを回転させて、プロッチを動かすことができる。コースを走らすことができる| | + | |モータ|左右のタイヤを回転させて、プロッチを動かす| |
- | |サーボモータ|[拡張パーツ]角度を指定できるモータ| | + | |サーボモータ|指定した角度にモータを制御する。※利用する場合、外部電源が必要になる| |
- | |距離センサ|[拡張パーツ]超音波が跳ね返ってくるまでの時間から距離を計測できる| | + | |超音波センサ|超音波を出力し、壁や障害物から跳ね返ってくるまでの時間から距離を計測する| |
- | |通信コード|[拡張パーツ]パソコンとパソコンの間に通信コードで繋げたプロッチを2台を入れることでパソコン間の文字の交換ができる| | + | |通信端子|プロッチ2台の通信端子をケーブルで接続し、それぞれをパソコンとUSBで接続して、文字や数値のやり取りをする| |
+ | ## ドリトルとプロッチの導入手順 | ||
+ | ドリトルでプロッチを制御するには、ドリトルのダウンロードの他、プロッチエディタ及び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を実行する。((「発行元を確認できませんでした。このソフトウェアを実行しますか?」のダイアログが出る場合は「このファイルを開く前に常に警告する(W)」のチェックを外してから「実行(R)」を選択する。)) | ||
- | ## ドリトルでプログラムをする手順 | ||
- | ドリトルによるプロッチのプログラミングは以下の手順で行う。 | ||
- | - ドリトルとプロッチのプログラム環境の導入(初回のみ必要な作業) | ||
- | - 開発モードでのプログラミング(パソコンとプロッチをUSBケーブルで接続した状態でプログラムの動作を確認する) | ||
- | * プロッチに通信用のプログラムを転送する(最初に一度だけ) | ||
- | * プログラムの作成・実行を行う | ||
- | * センサの計測値をドリトルの画面で確認しながらプログラムの修正・改良を行う | ||
- | - 独立モードでのプログラミング(プログラムをプロッチに転送して、USBケーブルを外した状態で動作を確認する) | ||
- | * プログラムを作成する | ||
- | * 作成したプログラムをプロッチに転送する | ||
- | * 転送後はケーブルを外して動作を確認する | ||
- | ### モード別の利用可能な機能 | + | ## ドリトルによるプロッチの制御方法の種類 |
- | 以下に、各モードの利用可能な機能を示す。基本的にドリトルのGUIを使ったプログラムに関しては、開発モードでのみ利用可能となる。 | + | ドリトルによるプロッチの制御は通信モードと自立モードがある。下表にそれぞれのメリット・デメリットを示す。 |
+ | ^ ^メリット^デメリット^ | ||
+ | |通信モード|ドリトルのGUIが利用できる \\ ・「ボタン」、「ラベル」、「テキストエリア」|PCとUSBケーブルで接続できる範囲でしか動作できない \\ ケーブルを抜くとエラーになる可能性がある| | ||
+ | |自立モード|プログラムを転送後はPCから離れた場所でも動作できる|センサやアクチュエータの動作の確認するすべがない| | ||
+ | |:::|:::|:::| | ||
- | ^ ^部品^開発モード^独立モード^ | + | 実際の開発にあたって、最初に通信モードでセンサの性質やアクチュエータの動作を確認しながら、プログラムを作成し、めどが立ってから自立モードでロボットを単独で動作させることが考えられる。 |
- | |アクチュエータの制御|LEDの点灯・消灯制御|◯|◯| | + | |
- | |:::|モータの回転制御|◯|◯| | + | |
- | |:::|サーボモータの角度制御|◯|◯| | + | |
- | |:::|ブザーの音程制御|×((現在対応を進めている))|◯| | + | |
- | |センサの入力値の計測|スイッチの入力計測|◯|◯| | + | |
- | |:::|光センサの光量計測|◯|◯| | + | |
- | |:::|ラインセンサの赤外線の反射量の計測|◯|◯| | + | |
- | |:::|距離センサの距離計測|◯|◯| | + | |
- | |通信機能|文字の交換|◯|×| | + | |
- | |ドリトルGUI機能|センサ値の画面表示|◯|×| | + | |
- | ## ドリトルとプロッチの導入手順 | + | ## 通信モードでのプロッチの制御方法 |
- | Windowsが導入されたコンピュータでドリトルとプロッチを通信するには、以下の設定をおこなう。このとき、ソフトウェアのインストールを行うため、OSの管理者権限が必要となる場合がある。 | + | ここでは、通信モードでの制御方法について説明する。なお、自立モードでの制御方法に関しては、〜〜を参照してください。\\ |
- | - プロッチの標準ソフトウェアをインストールする | + | 通信モードでは、パソコンとプロッチをUSBケーブルで接続した状態でプロッチの制御を行う。ドリトルでは、プログラムを実行すると、USBシリアル通信を用いてプロッチに制御命令を送信している。送信された命令をプロッチで受信し、命令に合わせて動作を行う。 |
- | * 株式会社山崎教育システムのサイト(http://protch.jp/#section2)のインストールページのインストール手順に沿って行う。 | + | |
- | - プロッチのデバイスドライバのインストールする | + | |
- | * プロッチの電源を入れた状態でPCのUSBポートにプロッチを接続する。1.が正しくインストールされていれば、自動的にドライバがインストールされる | + | |
- | * ドライバのインストールが完了するのを待つ。完了すると「Prolific USB-to-Serial Comm Port (COM*)((COM*の部分は環境によって異なる。)) デバイスドライバーソフトウェアが正しくインストールされました。」と表示される | + | |
- | - ドリトルをインストールする | + | |
- | * ドリトルのサイト(http://dolittle.eplang.jp)のダウンロードから最新版のWindows用のドリトルをダウンロードして任意のフォルダに展開する。(可能であれば、「C:」直下に入れる((ファイルパスが256文字を超える場合はドリトルが起動しない問題がある))) | + | |
- | - ドリトルの起動 | + | |
- | * エクスプローラからdolittle.batを実行する。((「発行元を確認できませんでした。このソフトウェアを実行しますか?」のダイアログが出る場合は「このファイルを開く前に常に警告する(W)」のチェックを外してから「実行(R)」を選択する。)) | + | |
+ | {{ :pasted:protch_process.png?400 }} | ||
- | ## プロッチを開発モードで利用するための準備 | ||
- | 開発モードでは、ドリトルからプロッチを制御するための通信プログラムを転送しておく必要がある。通信プログラムは、独立モードのプログラムを転送しない限り一度だけ転送すればよい。通信プログラムの転送手順は(https://dolittle.eplang.jp/ch_protchrm/remote)を参照してください。 | ||
- | |||
## プログラムの入力から実行まで | ## プログラムの入力から実行まで | ||
- | ここではドリトルのプログラムの入力から実行までの手順を説明する。 | + | ここではプロッチのLEDを交互に点滅するプログラムを使って、ドリトルのプログラムの入力から実行までの手順を説明する。\\ |
- | + | **手順1**:プログラムを編集画面に入力\\ | |
- | **手順1**:プログラムを編集画面に入力 | + | 次のプログラムを入力する。(サンプルプログラム(**.dtl)) |
- | + | ||
- | 次のプログラムを入力する。 | + | |
<code> | <code> | ||
システム!"protchrm"使う。 | システム!"protchrm"使う。 | ||
ライン 85: | ライン 69: | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
左ライト!点灯。 | 左ライト!点灯。 | ||
- | プロッチ!1 待つ。 | + | プロッチ!1 待つ。 |
左ライト!消灯。 | 左ライト!消灯。 | ||
プロッチ!1 待つ。 | プロッチ!1 待つ。 | ||
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
- | **手順2**:プログラムの実行(実行ボタンを押す)\\ | + | **手順2**:通信用のプログラムをプロッチに転送する\\ |
- | **手順3**:動作を開始する | + | * プログラムを実行すると次のダイアログが表示するので、「はい」を押す\\ |
- | * 実行画面の「動作開始」ボタンを押す(ドリトルからプロッチを制御する命令の送信が開始する) | + | (画像を追加)\\ |
- | + | **手順3**:動作を終了する\\ | |
- | {{:pasted:protchrm_startpng.png}} | + | |
- | + | ||
- | **手順4**:動作を確認できたら動作を終了する | + | |
* 実行画面の「動作終了」ボタンを押す(ドリトルからの制御命令の送信を終了する) | * 実行画面の「動作終了」ボタンを押す(ドリトルからの制御命令の送信を終了する) | ||
{{:pasted:protchrm_end.png}} | {{:pasted:protchrm_end.png}} | ||
- | 今回のプログラムでは、左のLEDが1秒ごとに点滅すれば正しく動作している。 | + | 今回のプログラムでは、左のLEDが1秒ごとに点滅すれば正しく動作している。プログラムの説明は、後にしている。 |
- | ## プロッチのプログラムの基本 | + | ### プロッチの制御プログラムを書く時のルール |
ドリトルからプロッチを制御するプログラムを説明する。 | ドリトルからプロッチを制御するプログラムを説明する。 | ||
- | **書き方1**\\ | + | **ルール1**\\ |
プロッチを**使う**プログラムを作成することを示すため、先頭の行に記述する。プロッチ本体を表す「プロッチ」((「protch」「プロ」も使用できる。))というオブジェクトや各種センサやモータなどを表すオブジェクトが使えるようになる。 | プロッチを**使う**プログラムを作成することを示すため、先頭の行に記述する。プロッチ本体を表す「プロッチ」((「protch」「プロ」も使用できる。))というオブジェクトや各種センサやモータなどを表すオブジェクトが使えるようになる。 | ||
<code> | <code> | ||
ライン 114: | ライン 96: | ||
</code> | </code> | ||
- | **書き方2**\\ | + | **ルール2**\\ |
- | 一度だけ実行したい処理を**最初に実行**のブロックに書く。開発モードでは、「動作終了」のタイミングによってはLEDが点灯した状態やモータが回転した状態が残ってしまうので、LEDを消す処理やモータを停止する処理を書くことが考えられる。 | + | 一度だけ実行したい処理を**最初に実行**のブロックに書く。モータの速度を設定することや、動作の開始を合図するためのブザー音などの処理を書くことが考えられる。 |
<code> | <code> | ||
最初に実行=「 | 最初に実行=「 | ||
ライン 122: | ライン 103: | ||
」。 | 」。 | ||
</code> | </code> | ||
- | **書き方3**\\ | + | **ルール3**\\ |
- | 今回は、LEDが点灯した状態が残ってしまうことを考慮し、最初に実行にLEDの**消灯**命令を書いた。プロッチはLEDが2つ搭載されているため、左側のLEDを制御するオブジェクトを「左ライト」、右側のLEDを制御するオブジェクトを「右ライト」にした。 | + | |
- | <code> | + | |
- | 左ライト!消灯。 | + | |
- | </code> | + | |
- | + | ||
- | **書き方4**\\ | + | |
何度も実行したい処理を**繰り返し実行**のブロックに書く。LEDの点滅やセンサの計測値によって動作を分岐するような処理を書くことが考えられる。 | 何度も実行したい処理を**繰り返し実行**のブロックに書く。LEDの点滅やセンサの計測値によって動作を分岐するような処理を書くことが考えられる。 | ||
- | |||
<code> | <code> | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
ライン 137: | ライン 111: | ||
</code> | </code> | ||
- | **書き方5**\\ | + | **ルール4**\\ |
- | 今回は、LEDの点滅をするために、**点灯**命令と**消灯**命令を書いた。点灯と消灯命令の間には、プログラムの実行を止めるプロッチオブジェクトの**待つ**命令を書いている。待つの単位は秒である。次のプログラムでは、「点灯」「1秒待つ」「消灯」「1秒待つ」を繰り返しているので1秒間隔でLEDが点滅していることになる。 | + | 最初に実行や繰り返し実行のブロックに書いたプログラムをプロッチに送るために**転送**を使用する。通信モードの場合、制御命令を一つずつプロッチに送る。 |
<code> | <code> | ||
- | 左ライト!点灯。 | + | プロッチ!転送。 |
- | プロッチ!1 待つ。 | + | </code> |
- | 左ライト!消灯。 | + | |
- | プロッチ!1 待つ。 | + | ## ライトを点灯しよう |
+ | プロッチに搭載しているライトは、「左ライト!点灯。」や「右ライト!点灯。」を使うことでライトを点灯することができる。また、「左ライト!消灯」や「右ライト!消灯」を使うことでライトを消灯することができる。 | ||
+ | |||
+ | <code> | ||
+ | システム!"protch"使う。 | ||
+ | 最初に実行=「 | ||
+ | 左ライト!点灯。 | ||
+ | プロッチ!1 待つ。 | ||
+ | 左ライト!消灯。 | ||
+ | プロッチ!1 待つ。 | ||
+ | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
+ | 上記のプログラムでは、左ライトが1秒間点灯する。 | ||
**左ライト・右ライトの命令一覧** | **左ライト・右ライトの命令一覧** | ||
ライン 152: | ライン 138: | ||
## スイッチの利用 | ## スイッチの利用 | ||
- | プロッチに搭載しているスイッチは、**押された?**を使うことでスイッチのONとOFFを検出できる。スイッチは左右に搭載しており、左側のスイッチを制御するオブジェクトを「左スイッチ」、右側のスイッチを制御するオブジェクトを「右スイッチ」にした。\\ | + | プロッチに搭載しているスイッチは、「左スイッチ!接触?」や「右スイッチ!接触?」を使うことでスイッチのONとOFFを検出できる。 |
- | 次のプログラムでは、左スイッチが押されている時に左ライトが点灯し、押されていないときは消灯する。プログラムは繰り返し実行に書いているため、何度の実行される。 | + | |
<code> | <code> | ||
システム! "protchrm" 使う。 | システム! "protchrm" 使う。 | ||
ライン 161: | ライン 145: | ||
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
- | 「左スイッチ! 押された?」! なら「 | + | 「(左スイッチ! 接触?)==はい」! なら「 |
左ライト! 点灯。 | 左ライト! 点灯。 | ||
」そうでなければ「 | 」そうでなければ「 | ||
ライン 167: | ライン 151: | ||
」実行。 | 」実行。 | ||
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
- | 下図は、プロッチが箱に衝突し、左スイッチが押されたので左ライトが点灯している。 | + | 上記のプログラムでは、左スイッチが押されている時に左ライトが点灯し、押されていないときは消灯する。プログラムは繰り返し実行の中に書いているため、何度の実行される。例えば、プロッチが箱に衝突したことを知らせるために左ライトを点灯するなどができる。 |
{{:pasted:protch_switch.jpg}} | {{:pasted:protch_switch.jpg}} | ||
- | **スイッチの命令一覧** | + | **左スイッチ・右スイッチの命令一覧** |
^ 命令 ^ 機能 ^ | ^ 命令 ^ 機能 ^ | ||
- | |読む | スイッチの入力を0か1で取得する | | + | |接触? | スイッチの入力を「はい」か「いいえ」で取得する | |
- | |接触? | スイッチの入力を0か1で取得する | | + | |
## 光センサの利用 | ## 光センサの利用 | ||
ライン 189: | ライン 172: | ||
計測結果!(左光センサ!明るさ?)書く。 | 計測結果!(左光センサ!明るさ?)書く。 | ||
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
ライン 204: | ライン 188: | ||
」実行。 | 」実行。 | ||
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
下図は、左光センサを手で隠すと暗くなるのでLEDが点灯している。 | 下図は、左光センサを手で隠すと暗くなるのでLEDが点灯している。 | ||
ライン 209: | ライン 194: | ||
{{:pasted:protch_light.png}} | {{:pasted:protch_light.png}} | ||
- | **光センサの命令一覧** | + | **左光センサ・右光センサの命令一覧** |
^ 命令 ^ 機能 ^ | ^ 命令 ^ 機能 ^ | ||
|読む | 光量を0〜255の範囲で取得する。暗い程、取得する値は大きくなる | | |読む | 光量を0〜255の範囲で取得する。暗い程、取得する値は大きくなる | | ||
ライン 217: | ライン 202: | ||
## サーボモータの利用 | ## サーボモータの利用 | ||
- | プロッチにはサーボモータ用の端子がある。サーボモータは**角度**を使うことで指定した角度にモータを動かすことができる。端子は左右にあり、左側のサーボモータを制御するオブジェクトを「左サーボモータ」、右側のサーボモータを制御するオブジェクトを「右サーボモータ」にした。サーボモータの接続方法は下図のとおりである。サーボモータを利用するときは、外部電源に電池ボックスを接続する必要がある。 | + | プロッチにはサーボモータ用の端子がある。サーボモータは**角度**を使うことで指定した角度にモータを動かすことができる。端子は左右にあり、左側のサーボモータを制御するオブジェクトを「左サーボ」、右側のサーボモータを制御するオブジェクトを「右サーボ」にした。サーボモータの接続方法は下図のとおりである。サーボモータを利用するときは、外部電源に電池ボックスを接続する必要がある。 |
{{:pasted:protch_servo.jpg}} | {{:pasted:protch_servo.jpg}} | ||
ライン 225: | ライン 210: | ||
システム!"protchrm"使う。 | システム!"protchrm"使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | 左サーボモータ!180 角度。 | + | 左サーボ!180 角度。 |
- | 右サーボモータ!180 角度。 | + | 右サーボ!180 角度。 |
プロッチ!1 待つ。 | プロッチ!1 待つ。 | ||
- | 左サーボモータ!0 角度。 | + | 左サーボ!0 角度。 |
- | 右サーボモータ!0 角度。 | + | 右サーボ!0 角度。 |
」。 | 」。 | ||
+ | |||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
- | **サーボモータの命令一覧** | + | **右サーボ・左サーボの命令一覧** |
^ 命令 ^ 機能 ^ | ^ 命令 ^ 機能 ^ | ||
|角度 |0度~180度の間で角度を指定する| | |角度 |0度~180度の間で角度を指定する| | ||
ライン 244: | ライン 231: | ||
システム! "protchrm" 使う。 | システム! "protchrm" 使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | モータ!1 前進。 | + | プロッチ!1 前進。 |
- | モータ!1 後進。 | + | プロッチ!1 後進。 |
- | モータ!1 左折。 | + | プロッチ!1 左折。 |
- | モータ!1 右折。 | + | プロッチ!1 右折。 |
- | モータ!1 左回り。 | + | プロッチ!1 左回り。 |
- | モータ!1 右回り。 | + | プロッチ!1 右回り。 |
- | モータ!停止。 | + | プロッチ!停止。 |
」。 | 」。 | ||
+ | |||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
ライン 260: | ライン 249: | ||
システム! "protchrm" 使う。 | システム! "protchrm" 使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | モータ!停止。 | + | プロッチ!停止。 |
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
- | 「左スイッチ!押された?」!なら「 | + | 「(左スイッチ!接触?)==はい」!なら「 |
- | モータ!255 255 速度設定。 | + | プロッチ!255 255 速度。 |
- | モータ!1 前進。 | + | プロッチ!1 前進。 |
- | 」そうでなければ「右スイッチ!押された?」なら「 | + | 」そうでなければ「(右スイッチ!接触?)==はい」なら「 |
- | モータ!100 100 速度設定。 | + | プロッチ!100 100 速度。 |
- | モータ!1 前進。 | + | プロッチ!1 前進。 |
」実行。 | 」実行。 | ||
」。 | 」。 | ||
+ | |||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
- | **モータ**の命令一覧 | + | **プロッチのモータの命令一覧** |
^ 命令 ^ 機能 ^ | ^ 命令 ^ 機能 ^ | ||
|前進 | 左右のモータを正回転する| | |前進 | 左右のモータを正回転する| | ||
ライン 283: | ライン 274: | ||
|左回り | 右側のモータが標準の速度で正回転し、左側のDCモータが標準の速度/5の速度で正回転する | | |左回り | 右側のモータが標準の速度で正回転し、左側のDCモータが標準の速度/5の速度で正回転する | | ||
|右回り | 左側のモータが標準の速度で正回転し、右側のDCモータが標準の速度/5の速度で正回転する | | |右回り | 左側のモータが標準の速度で正回転し、右側のDCモータが標準の速度/5の速度で正回転する | | ||
- | |速度設定 | DC モータの速度を0 から255 までの値で設定する。標準では100になっている | | + | |速度 | DC モータの速度を0 から255 までの値で設定する。標準では100になっている | |
## ラインセンサの利用 | ## ラインセンサの利用 | ||
ライン 296: | ライン 287: | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
計測結果!(左ラインセンサ!読む)書く。 | 計測結果!(左ラインセンサ!読む)書く。 | ||
+ | プロッチ!0.5 待つ。 | ||
」。 | 」。 | ||
</code> | </code> | ||
### ライントレースカー | ### ライントレースカー | ||
- | ラインセンサの反射量は、物体の色によって変化する。この特性を使うことでラインの白と黒を判断することができる。ライントレースカーは、ラインセンサで地面に描かれた線(黒色)を判断し、コースに沿って動くようにモータを制御する。\\ | + | ライントレースカーは、ラインセンサで地面に描かれた線(黒色)を判断し、コースに沿って動くようにモータを制御する。\\ |
次のプログラムでは、左右のラインセンサを比較し、線の上にいなければ右折し、線の上にいれば左折する。 | 次のプログラムでは、左右のラインセンサを比較し、線の上にいなければ右折し、線の上にいれば左折する。 | ||
ライン 305: | ライン 297: | ||
システム!"protchrm" 使う。 | システム!"protchrm" 使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | モータ!停止。 | + | プロッチ!停止。 |
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
「(左ラインセンサ!読む)<(右ラインセンサ!読む)」!なら「 | 「(左ラインセンサ!読む)<(右ラインセンサ!読む)」!なら「 | ||
- | モータ!左回り。 | + | プロッチ!左回り。 |
」そうでなければ「 | 」そうでなければ「 | ||
- | モータ!右回り。 | + | プロッチ!右回り。 |
」実行。 | 」実行。 | ||
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
{{:pasted:protch_line.png}} | {{:pasted:protch_line.png}} | ||
- | **ラインセンサ**の命令一覧 | + | **ラインセンサの命令一覧** |
^ 命令 ^ 機能 ^ | ^ 命令 ^ 機能 ^ | ||
|読む |赤外線の反射量を0〜255の範囲で取得する| | |読む |赤外線の反射量を0〜255の範囲で取得する| | ||
ライン 330: | ライン 322: | ||
システム!"protchrm"使う。 | システム!"protchrm"使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | モータ!停止。 | + | プロッチ!停止。 |
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
「(距離センサ!距離?)<40」!なら「 | 「(距離センサ!距離?)<40」!なら「 | ||
- | モータ!1 停止。 | + | プロッチ!1 停止。 |
」そうでなければ「 | 」そうでなければ「 | ||
- | モータ!前進。 | + | プロッチ!前進。 |
」実行。 | 」実行。 | ||
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
{{:pasted:protch_distance.png}} | {{:pasted:protch_distance.png}} | ||
- | **距離センサ**の命令一覧 | + | **距離センサの命令一覧** |
^ 命令 ^ 機能 ^ | ^ 命令 ^ 機能 ^ | ||
|読む |距離センサの計測値をmmで取得する | | |読む |距離センサの計測値をmmで取得する | | ||
ライン 349: | ライン 341: | ||
- | ## 文字の交換 | + | ## 文字のやりとり |
- | プロッチを2台使うことで文字を送ることができる。文字の送受信はシリアルオブジェクトの**出力**で文字を送信し、**読む**で送信された文字を取得できる。プロッチ2台を下図のように線で繋ぐ必要がある。 | + | プロッチを2台使うことで文字を送ることができる。文字の送受信はシリアルオブジェクトの**出力**で文字を送信し、**読む**で送信された文字を取得できる。プロッチ2台を繋ぐためには、ジャンパワイヤーなどの通信コードを使う。パソコンとの接続は下図のように行う。 |
+ | {{:pasted:protch_chat_pc.jpg}} | ||
- | {{:pasted:protch_rm.jpg}} | + | ジャンパーワイヤーの配線については、下図のようにすればよい。 |
+ | {{:pasted:protch_chat.png}} | ||
### メッセージを送信する | ### メッセージを送信する | ||
ライン 359: | ライン 353: | ||
システム! "protchrm" 使う。 | システム! "protchrm" 使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | シリアル!"こんにちは"出力。 | + | 通信端子!"こんにちは"送信。 |
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
ライン 369: | ライン 363: | ||
システム! "protchrm" 使う。 | システム! "protchrm" 使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | 受信ラベル=ラベル!""作る。 | + | 受信ラベル=ラベル!作る。 |
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
- | 受信ラベル!(シリアル!読む)書く。 | + | 受信ラベル!(通信端子!受信)書く。 |
」。 | 」。 | ||
+ | |||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
ライン 383: | ライン 379: | ||
### チャットプログラム | ### チャットプログラム | ||
- | 次のプログラムでは、フィールドオブジェクトに書いた文字をボタンの動作で出力している。また、読む命令を0.1秒間隔で実行することで受信した文字をテキストエリアに書いている。 | + | 次のプログラムでは、フィールドオブジェクトに書いた文字をプロッチの左スイッッチの押下により送信している。また、 |
<code> | <code> | ||
ライン 389: | ライン 385: | ||
最初に実行=「 | 最初に実行=「 | ||
送信フィールド=フィールド! 作る。 | 送信フィールド=フィールド! 作る。 | ||
- | 送信ボタン=ボタン!"送信"作る。 | ||
受信エリア=テキストエリア! 作る。 | 受信エリア=テキストエリア! 作る。 | ||
- | 送信ボタン:動作=「シリアル! (送信フィールド! 読む)出力」。 | + | 」。 |
- | 前回受信値="". | + | |
- | 「 | + | 繰り返し実行=「 |
- | 受信値=シリアル! 読む。 | + | 「(左スイッチ!接触?)==はい」!なら「 |
- | 「前回受信値! =受信値」! なら「 | + | 通信端子! (送信フィールド! 読む)送信 |
+ | 」実行。 | ||
+ | 受信値=通信端子! 受信。 | ||
+ | 「受信値!=””」! なら「 | ||
受信エリア! (受信値)書く。 | 受信エリア! (受信値)書く。 | ||
- | 」実行。 | + | 」実行。 |
- | 前回受信値=受信。 | + | |
- | プロッチ!0.1 待つ。 | + | |
- | 」! 1000 繰り返す。 | + | |
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
上記のプログラムを実行すると下図のような実行画面が現れる。①はフィールドに記述した文字を「送信」ボタンを押すことで送信する。②は送られてきた文字が書かれる。 | 上記のプログラムを実行すると下図のような実行画面が現れる。①はフィールドに記述した文字を「送信」ボタンを押すことで送信する。②は送られてきた文字が書かれる。 |