この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ch_protchrm [2019/01/28 20:07] klab |
ch_protchrm [2019/03/15 16:15] (現在) klab |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
# プロッチを使ってみよう | # プロッチを使ってみよう | ||
- | LEDや各種センサ、通信機能を持つロボット「**プロッチ**」を使ってプログラムで操作してみよう。プロッチのプログラミングは、ダウンロード版のドリトルのみ対応している。 | + | LEDや各種センサ、通信機能を持つロボット「**プロッチ**」を使ってプログラムで操作してみよう。 |
## プロッチについて | ## プロッチについて | ||
ライン 56: | ライン 56: | ||
通信モードでは、パソコンとプロッチをUSBケーブルで接続した状態でプロッチの制御を行う。ドリトルでは、プログラムを実行すると、USBシリアル通信を用いてプロッチに制御命令を送信している。送信された命令をプロッチで受信し、命令に合わせて動作を行う。 | 通信モードでは、パソコンとプロッチをUSBケーブルで接続した状態でプロッチの制御を行う。ドリトルでは、プログラムを実行すると、USBシリアル通信を用いてプロッチに制御命令を送信している。送信された命令をプロッチで受信し、命令に合わせて動作を行う。 | ||
- | {{:pasted:protch_process.png?400}} | + | {{ :pasted:protch_process.png?400 }} |
## プログラムの入力から実行まで | ## プログラムの入力から実行まで | ||
ここではプロッチのLEDを交互に点滅するプログラムを使って、ドリトルのプログラムの入力から実行までの手順を説明する。\\ | ここではプロッチのLEDを交互に点滅するプログラムを使って、ドリトルのプログラムの入力から実行までの手順を説明する。\\ | ||
ライン 68: | ライン 69: | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
左ライト!点灯。 | 左ライト!点灯。 | ||
- | プロッチ!1 待つ。 | + | プロッチ!1 待つ。 |
左ライト!消灯。 | 左ライト!消灯。 | ||
プロッチ!1 待つ。 | プロッチ!1 待つ。 | ||
ライン 75: | ライン 76: | ||
</code> | </code> | ||
- | **手順2**:プログラムの実行(実行ボタンを押す)\\ | + | **手順2**:通信用のプログラムをプロッチに転送する\\ |
- | **手順3**:動作を確認する\\ | + | * プログラムを実行すると次のダイアログが表示するので、「はい」を押す\\ |
- | **手順4**:動作を終了する\\ | + | (画像を追加)\\ |
+ | **手順3**:動作を終了する\\ | ||
* 実行画面の「動作終了」ボタンを押す(ドリトルからの制御命令の送信を終了する) | * 実行画面の「動作終了」ボタンを押す(ドリトルからの制御命令の送信を終了する) | ||
{{:pasted:protchrm_end.png}} | {{:pasted:protchrm_end.png}} | ||
- | 今回のプログラムでは、左のLEDが1秒ごとに点滅すれば正しく動作している。 | + | 今回のプログラムでは、左のLEDが1秒ごとに点滅すれば正しく動作している。プログラムの説明は、後にしている。 |
ライン 115: | ライン 117: | ||
</code> | </code> | ||
- | + | ## ライトを点灯しよう | |
- | + | プロッチに搭載しているライトは、「左ライト!点灯。」や「右ライト!点灯。」を使うことでライトを点灯することができる。また、「左ライト!消灯」や「右ライト!消灯」を使うことでライトを消灯することができる。 | |
<code> | <code> | ||
- | 左ライト!点灯。 | + | システム!"protch"使う。 |
- | プロッチ!1 待つ。 | + | 最初に実行=「 |
- | 左ライト!消灯。 | + | 左ライト!点灯。 |
- | プロッチ!1 待つ。 | + | プロッチ!1 待つ。 |
+ | 左ライト!消灯。 | ||
+ | プロッチ!1 待つ。 | ||
+ | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
+ | 上記のプログラムでは、左ライトが1秒間点灯する。 | ||
**左ライト・右ライトの命令一覧** | **左ライト・右ライトの命令一覧** | ||
ライン 139: | ライン 145: | ||
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
- | 「左スイッチ! 押された?」! なら「 | + | 「(左スイッチ! 接触?)==はい」! なら「 |
左ライト! 点灯。 | 左ライト! 点灯。 | ||
」そうでなければ「 | 」そうでなければ「 | ||
ライン 145: | ライン 151: | ||
」実行。 | 」実行。 | ||
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
- | 上記のプログラムでは、左スイッチが押されている時に左ライトが点灯し、押されていないときは消灯する。プログラムは繰り返し実行の中に書いているため、何度の実行される。 | + | 上記のプログラムでは、左スイッチが押されている時に左ライトが点灯し、押されていないときは消灯する。プログラムは繰り返し実行の中に書いているため、何度の実行される。例えば、プロッチが箱に衝突したことを知らせるために左ライトを点灯するなどができる。 |
- | + | ||
- | + | ||
- | 下図は、プロッチが箱に衝突し、左スイッチが押されたので左ライトが点灯している。 | + | |
{{:pasted:protch_switch.jpg}} | {{:pasted:protch_switch.jpg}} | ||
**左スイッチ・右スイッチの命令一覧** | **左スイッチ・右スイッチの命令一覧** | ||
^ 命令 ^ 機能 ^ | ^ 命令 ^ 機能 ^ | ||
- | |読む | スイッチの入力を0か1で取得する | | + | |接触? | スイッチの入力を「はい」か「いいえ」で取得する | |
- | |接触? | スイッチの入力を0か1で取得する | | + | |
## 光センサの利用 | ## 光センサの利用 | ||
ライン 170: | ライン 172: | ||
計測結果!(左光センサ!明るさ?)書く。 | 計測結果!(左光センサ!明るさ?)書く。 | ||
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
ライン 185: | ライン 188: | ||
」実行。 | 」実行。 | ||
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
下図は、左光センサを手で隠すと暗くなるのでLEDが点灯している。 | 下図は、左光センサを手で隠すと暗くなるのでLEDが点灯している。 | ||
ライン 198: | ライン 202: | ||
## サーボモータの利用 | ## サーボモータの利用 | ||
- | プロッチにはサーボモータ用の端子がある。サーボモータは**角度**を使うことで指定した角度にモータを動かすことができる。端子は左右にあり、左側のサーボモータを制御するオブジェクトを「左サーボモータ」、右側のサーボモータを制御するオブジェクトを「右サーボモータ」にした。サーボモータの接続方法は下図のとおりである。サーボモータを利用するときは、外部電源に電池ボックスを接続する必要がある。 | + | プロッチにはサーボモータ用の端子がある。サーボモータは**角度**を使うことで指定した角度にモータを動かすことができる。端子は左右にあり、左側のサーボモータを制御するオブジェクトを「左サーボ」、右側のサーボモータを制御するオブジェクトを「右サーボ」にした。サーボモータの接続方法は下図のとおりである。サーボモータを利用するときは、外部電源に電池ボックスを接続する必要がある。 |
{{:pasted:protch_servo.jpg}} | {{:pasted:protch_servo.jpg}} | ||
ライン 206: | ライン 210: | ||
システム!"protchrm"使う。 | システム!"protchrm"使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | 左サーボモータ!180 角度。 | + | 左サーボ!180 角度。 |
- | 右サーボモータ!180 角度。 | + | 右サーボ!180 角度。 |
プロッチ!1 待つ。 | プロッチ!1 待つ。 | ||
- | 左サーボモータ!0 角度。 | + | 左サーボ!0 角度。 |
- | 右サーボモータ!0 角度。 | + | 右サーボ!0 角度。 |
」。 | 」。 | ||
+ | |||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
- | **右サーボモータ・左サーボモータの命令一覧** | + | **右サーボ・左サーボの命令一覧** |
^ 命令 ^ 機能 ^ | ^ 命令 ^ 機能 ^ | ||
|角度 |0度~180度の間で角度を指定する| | |角度 |0度~180度の間で角度を指定する| | ||
ライン 225: | ライン 231: | ||
システム! "protchrm" 使う。 | システム! "protchrm" 使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | モータ!1 前進。 | + | プロッチ!1 前進。 |
- | モータ!1 後進。 | + | プロッチ!1 後進。 |
- | モータ!1 左折。 | + | プロッチ!1 左折。 |
- | モータ!1 右折。 | + | プロッチ!1 右折。 |
- | モータ!1 左回り。 | + | プロッチ!1 左回り。 |
- | モータ!1 右回り。 | + | プロッチ!1 右回り。 |
- | モータ!停止。 | + | プロッチ!停止。 |
」。 | 」。 | ||
+ | |||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
ライン 241: | ライン 249: | ||
システム! "protchrm" 使う。 | システム! "protchrm" 使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | モータ!停止。 | + | プロッチ!停止。 |
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
- | 「左スイッチ!押された?」!なら「 | + | 「(左スイッチ!接触?)==はい」!なら「 |
- | モータ!255 255 速度設定。 | + | プロッチ!255 255 速度。 |
- | モータ!1 前進。 | + | プロッチ!1 前進。 |
- | 」そうでなければ「右スイッチ!押された?」なら「 | + | 」そうでなければ「(右スイッチ!接触?)==はい」なら「 |
- | モータ!100 100 速度設定。 | + | プロッチ!100 100 速度。 |
- | モータ!1 前進。 | + | プロッチ!1 前進。 |
」実行。 | 」実行。 | ||
」。 | 」。 | ||
+ | |||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
- | **モータの命令一覧** | + | **プロッチのモータの命令一覧** |
^ 命令 ^ 機能 ^ | ^ 命令 ^ 機能 ^ | ||
|前進 | 左右のモータを正回転する| | |前進 | 左右のモータを正回転する| | ||
ライン 264: | ライン 274: | ||
|左回り | 右側のモータが標準の速度で正回転し、左側のDCモータが標準の速度/5の速度で正回転する | | |左回り | 右側のモータが標準の速度で正回転し、左側のDCモータが標準の速度/5の速度で正回転する | | ||
|右回り | 左側のモータが標準の速度で正回転し、右側のDCモータが標準の速度/5の速度で正回転する | | |右回り | 左側のモータが標準の速度で正回転し、右側のDCモータが標準の速度/5の速度で正回転する | | ||
- | |速度設定 | DC モータの速度を0 から255 までの値で設定する。標準では100になっている | | + | |速度 | DC モータの速度を0 から255 までの値で設定する。標準では100になっている | |
## ラインセンサの利用 | ## ラインセンサの利用 | ||
ライン 277: | ライン 287: | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
計測結果!(左ラインセンサ!読む)書く。 | 計測結果!(左ラインセンサ!読む)書く。 | ||
+ | プロッチ!0.5 待つ。 | ||
」。 | 」。 | ||
</code> | </code> | ||
### ライントレースカー | ### ライントレースカー | ||
- | ラインセンサの反射量は、物体の色によって変化する。この特性を使うことでラインの白と黒を判断することができる。ライントレースカーは、ラインセンサで地面に描かれた線(黒色)を判断し、コースに沿って動くようにモータを制御する。\\ | + | ライントレースカーは、ラインセンサで地面に描かれた線(黒色)を判断し、コースに沿って動くようにモータを制御する。\\ |
次のプログラムでは、左右のラインセンサを比較し、線の上にいなければ右折し、線の上にいれば左折する。 | 次のプログラムでは、左右のラインセンサを比較し、線の上にいなければ右折し、線の上にいれば左折する。 | ||
ライン 286: | ライン 297: | ||
システム!"protchrm" 使う。 | システム!"protchrm" 使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | モータ!停止。 | + | プロッチ!停止。 |
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
「(左ラインセンサ!読む)<(右ラインセンサ!読む)」!なら「 | 「(左ラインセンサ!読む)<(右ラインセンサ!読む)」!なら「 | ||
- | モータ!左回り。 | + | プロッチ!左回り。 |
」そうでなければ「 | 」そうでなければ「 | ||
- | モータ!右回り。 | + | プロッチ!右回り。 |
」実行。 | 」実行。 | ||
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
ライン 311: | ライン 322: | ||
システム!"protchrm"使う。 | システム!"protchrm"使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | モータ!停止。 | + | プロッチ!停止。 |
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
「(距離センサ!距離?)<40」!なら「 | 「(距離センサ!距離?)<40」!なら「 | ||
- | モータ!1 停止。 | + | プロッチ!1 停止。 |
」そうでなければ「 | 」そうでなければ「 | ||
- | モータ!前進。 | + | プロッチ!前進。 |
」実行。 | 」実行。 | ||
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
{{:pasted:protch_distance.png}} | {{:pasted:protch_distance.png}} | ||
ライン 342: | ライン 353: | ||
システム! "protchrm" 使う。 | システム! "protchrm" 使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | シリアル!"こんにちは"出力。 | + | 通信端子!"こんにちは"送信。 |
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
ライン 352: | ライン 363: | ||
システム! "protchrm" 使う。 | システム! "protchrm" 使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | 受信ラベル=ラベル!""作る。 | + | 受信ラベル=ラベル!作る。 |
」。 | 」。 | ||
繰り返し実行=「 | 繰り返し実行=「 | ||
- | 受信ラベル!(シリアル!読む)書く。 | + | 受信ラベル!(通信端子!受信)書く。 |
」。 | 」。 | ||
+ | |||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
ライン 366: | ライン 379: | ||
### チャットプログラム | ### チャットプログラム | ||
- | 次のプログラムでは、フィールドオブジェクトに書いた文字をボタンの動作で出力している。また、読む命令を0.1秒間隔で実行することで受信した文字をテキストエリアに書いている。 | + | 次のプログラムでは、フィールドオブジェクトに書いた文字をプロッチの左スイッッチの押下により送信している。また、 |
<code> | <code> | ||
ライン 372: | ライン 385: | ||
最初に実行=「 | 最初に実行=「 | ||
送信フィールド=フィールド! 作る。 | 送信フィールド=フィールド! 作る。 | ||
- | 送信ボタン=ボタン!"送信"作る。 | ||
受信エリア=テキストエリア! 作る。 | 受信エリア=テキストエリア! 作る。 | ||
- | 送信ボタン:動作=「シリアル! (送信フィールド! 読む)出力」。 | + | 」。 |
- | 前回受信値="". | + | |
- | 「 | + | 繰り返し実行=「 |
- | 受信値=シリアル! 読む。 | + | 「(左スイッチ!接触?)==はい」!なら「 |
- | 「前回受信値! =受信値」! なら「 | + | 通信端子! (送信フィールド! 読む)送信 |
+ | 」実行。 | ||
+ | 受信値=通信端子! 受信。 | ||
+ | 「受信値!=””」! なら「 | ||
受信エリア! (受信値)書く。 | 受信エリア! (受信値)書く。 | ||
- | 」実行。 | + | 」実行。 |
- | 前回受信値=受信。 | + | |
- | プロッチ!0.1 待つ。 | + | |
- | 」! 1000 繰り返す。 | + | |
」。 | 」。 | ||
+ | プロッチ!転送。 | ||
</code> | </code> | ||
上記のプログラムを実行すると下図のような実行画面が現れる。①はフィールドに記述した文字を「送信」ボタンを押すことで送信する。②は送られてきた文字が書かれる。 | 上記のプログラムを実行すると下図のような実行画面が現れる。①はフィールドに記述した文字を「送信」ボタンを押すことで送信する。②は送られてきた文字が書かれる。 |