この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ch_protchremote [2019/03/16 00:17] klab [1. 最初の一歩(プログラムの作り方・実行の仕方の確認)] |
ch_protchremote [2019/03/16 03:20] (現在) klab |
||
---|---|---|---|
ライン 16: | ライン 16: | ||
**手順1**:プログラムを「編集画面」に入力\\ | **手順1**:プログラムを「編集画面」に入力\\ | ||
- | 次のプログラムを入力する。 | + | 次のプログラム(protch%%_%%rm%%_%%led.dtl)を入力する。 |
<code> | <code> | ||
ライン 39: | ライン 39: | ||
**手順3**:動作を終了する\\ | **手順3**:動作を終了する\\ | ||
- | * 実行画面の「動作終了」ボタンを押す(ドリトルからの制御命令の送信を終了する) | + | * 実行画面の「終了」ボタンを押す(ドリトルからの制御命令の送信を終了する) |
- | {{:pasted:protchrm_end.png}} | + | {{:pasted:protch_step3.png}}\\ |
ライン 87: | ライン 87: | ||
<code> | <code> | ||
- | システム!"protch"使う。 | + | システム!"protchrm"使う。 |
最初に実行=「 | 最初に実行=「 | ||
左ライト!点灯。 | 左ライト!点灯。 | ||
ライン 106: | ライン 106: | ||
各スイッチは、「左スイッチ!接触?」や「右スイッチ!接触?」を使うことでスイッチのONとOFFを検出できる。\\ | 各スイッチは、「左スイッチ!接触?」や「右スイッチ!接触?」を使うことでスイッチのONとOFFを検出できる。\\ | ||
- | 下記のプログラムでは、左スイッチが押されている時に左ライトが点灯し、押されていないときは消灯する。 | + | 下記のプログラム(protch%%_%%rm%%_%%switch.dtl)では、左スイッチが押されている時に左ライトが点灯し、押されていないときは消灯する。 |
ここでは、スイッチを利用した条件分岐のプログラムを、「繰り返し実行」のブロックの中に書いた。\\ | ここでは、スイッチを利用した条件分岐のプログラムを、「繰り返し実行」のブロックの中に書いた。\\ | ||
こうすることで、スイッチを利用する分岐プログラムを繰り返し実行することができる。 | こうすることで、スイッチを利用する分岐プログラムを繰り返し実行することができる。 | ||
ライン 113: | ライン 113: | ||
<code> | <code> | ||
システム! "protchrm" 使う。 | システム! "protchrm" 使う。 | ||
- | 最初に実行=「 | + | |
- | 左ライト!消灯。 | + | |
- | 」。 | + | |
繰り返し実行=「 | 繰り返し実行=「 | ||
「(左スイッチ!接触?)==はい」! なら「 | 「(左スイッチ!接触?)==はい」! なら「 | ||
ライン 139: | ライン 137: | ||
下記のプログラムは、光センサの計測値をPCの画面上に表示する。\\ | 下記のプログラムは、光センサの計測値をPCの画面上に表示する。\\ | ||
- | このプログラムでは、まず、プログラムを実行した最初(「最初に実行」の中)で、 | + | このプログラム(protch%%_%%sensor%%_%%check.dtl)では、まず、プログラムを実行した最初(「最初に実行」の中)で、 |
画面上に計測値を表示するためのラベル(「計測結果」)を作っている。 | 画面上に計測値を表示するためのラベル(「計測結果」)を作っている。 | ||
そして、「繰り返し実行」の中に、光センサの**明るさ?**で取得した計測値を「計測結果」のラベルに書くプログラムを記述することで、 | そして、「繰り返し実行」の中に、光センサの**明るさ?**で取得した計測値を「計測結果」のラベルに書くプログラムを記述することで、 | ||
ライン 157: | ライン 155: | ||
また、下記はセンサを制御に利用したプログラムの例である。 | また、下記はセンサを制御に利用したプログラムの例である。 | ||
- | このプログラムでは、周辺の光量が100より大きい時に左のライトが点灯する。 | + | このプログラム(protch%%_%%rm%%_%%light.dtl)では、周辺の光量が100より大きい時に左のライトが点灯する。 |
<code> | <code> | ||
システム! "protchrm" 使う。 | システム! "protchrm" 使う。 | ||
- | 最初に実行=「 | + | |
- | 左ライト!消灯。 | + | |
- | 」。 | + | |
繰り返し実行=「 | 繰り返し実行=「 | ||
「(左光センサ! 明るさ?)>100」! なら「 | 「(左光センサ! 明るさ?)>100」! なら「 | ||
ライン 197: | ライン 193: | ||
サーボモータの動作には時間がかかる。 | サーボモータの動作には時間がかかる。 | ||
このため、動作の完了までの待ち時間を作るために「プロッチ!1 待つ。」の命令で角度を180度に設定した後、1秒間の待ち時間を設けている。 | このため、動作の完了までの待ち時間を作るために「プロッチ!1 待つ。」の命令で角度を180度に設定した後、1秒間の待ち時間を設けている。 | ||
+ | 繰り返すの命令で繰り返し回数の指定が可能になる。今回は、3回に指定している。 | ||
<code> | <code> | ||
システム!"protchrm"使う。 | システム!"protchrm"使う。 | ||
最初に実行=「 | 最初に実行=「 | ||
- | 左サーボ!180 角度。 | + | 「 |
- | 右サーボ!180 角度。 | + | 左サーボ!90 角度。 |
- | プロッチ!1 待つ。 | + | プロッチ!1 待つ。 |
- | 左サーボ!0 角度。 | + | 左サーボ!180 角度。 |
- | 右サーボ!0 角度。 | + | プロッチ!1 待つ。 |
+ | 」!3 繰り返す。 | ||
」。 | 」。 | ||
- | + | プロッチ!転送。 | |
- | プロッチ!転送。 | + | |
</code> | </code> | ||
ライン 216: | ライン 213: | ||
### 3.5 モータの利用 | ### 3.5 モータの利用 | ||
ここでは、プロッチのモータ(車輪)の制御を行う。\\ | ここでは、プロッチのモータ(車輪)の制御を行う。\\ | ||
- | プロッチのモータは、「プロッチ」オブジェクトに対して**前進**・**後進**・**左折**・**右折**・**左回り**・**右回り**の命令を使うことで、 | + | プロッチのモータは、「プロッチ」オブジェクトに対して**前進**・**後退**・**左折**・**右折**・**左回り**・**右回り**の命令を使うことで、 |
各動作を行うとができる。 | 各動作を行うとができる。 | ||
また、**停止**を使うことでモータを止めることができる。\\ | また、**停止**を使うことでモータを止めることができる。\\ | ||
なお、これらの命令は秒数を指定することでその時間だけ動作することができる。\\ | なお、これらの命令は秒数を指定することでその時間だけ動作することができる。\\ | ||
- | 次のプログラムは、プロッチに前進、後進、左折、右折、左回り、右回りを1秒ごとに切り替えながら実行するためのプログラムである。 | + | 次のプログラムは、プロッチに前進、後退、左折、右折、左回り、右回りを1秒ごとに切り替えながら実行するためのプログラムである。 |
<code> | <code> | ||
ライン 226: | ライン 223: | ||
最初に実行=「 | 最初に実行=「 | ||
プロッチ!1 前進。 | プロッチ!1 前進。 | ||
- | プロッチ!1 後進。 | + | プロッチ!1 後退。 |
プロッチ!1 左折。 | プロッチ!1 左折。 | ||
プロッチ!1 右折。 | プロッチ!1 右折。 | ||
ライン 238: | ライン 235: | ||
#### スイッチを使ってモータの速度を変更する | #### スイッチを使ってモータの速度を変更する | ||
- | モータの回転速度は**速度設定**を使うことで変更できる。モータの回転速度は0〜255の範囲で設定でき、標準では100に設定している。\\ | + | モータの回転速度は**速度**を使うことで変更できる。モータの回転速度は0〜255の範囲で設定でき、標準では150に設定している。\\ |
- | 次のプログラムでは、左スイッチを押した時に回転速度を255にして1秒前進し、右スイッチを押した時に速度を100にして、1秒前進する。 | + | 次のプログラム(protch%%_%%rm%%_%%speed.dtl)では、左スイッチを押した時に回転速度を255にして1秒前進し、右スイッチを押した時に速度を100にして、1秒前進する。 |
<code> | <code> | ||
システム! "protchrm" 使う。 | システム! "protchrm" 使う。 | ||
- | 最初に実行=「 | ||
- | プロッチ!停止。 | ||
- | 」。 | ||
- | |||
繰り返し実行=「 | 繰り返し実行=「 | ||
「(左スイッチ!接触?)==はい」!なら「 | 「(左スイッチ!接触?)==はい」!なら「 | ||
ライン 262: | ライン 255: | ||
^ 命令 ^ 機能 ^ | ^ 命令 ^ 機能 ^ | ||
|前進 | 左右のモータを正回転する| | |前進 | 左右のモータを正回転する| | ||
- | |後進 | 左右のモータを逆回転する | | + | |後退 | 左右のモータを逆回転する | |
|停止 | 左右のモータを停止する | | |停止 | 左右のモータを停止する | | ||
|左折 | 右側のモータを正回転する | | |左折 | 右側のモータを正回転する | | ||
ライン 268: | ライン 261: | ||
|左回り | 右側のモータが標準の速度で正回転し、左側のDCモータが標準の速度/5の速度で正回転する | | |左回り | 右側のモータが標準の速度で正回転し、左側のDCモータが標準の速度/5の速度で正回転する | | ||
|右回り | 左側のモータが標準の速度で正回転し、右側のDCモータが標準の速度/5の速度で正回転する | | |右回り | 左側のモータが標準の速度で正回転し、右側のDCモータが標準の速度/5の速度で正回転する | | ||
- | |速度 | DC モータの速度を0 から255 までの値で設定する。標準では100になっている | | + | |速度 | DC モータの速度を0 から255 までの値で設定する。標準では150になっている | |
### 3.6 ラインセンサの利用 | ### 3.6 ラインセンサの利用 | ||
ライン 292: | ライン 285: | ||
#### ライントレースカー | #### ライントレースカー | ||
ライントレースカーは、ラインセンサで地面に描かれた線(黒色)を判断し、コースに沿って動くようにモータを制御する。\\ | ライントレースカーは、ラインセンサで地面に描かれた線(黒色)を判断し、コースに沿って動くようにモータを制御する。\\ | ||
- | 次のプログラムでは、左右のラインセンサを比較し、線の上にいなければ右折し、線の上にいれば左折する。 | + | 次のプログラム(protch%%_%%rm%%_%%linetrace.dtl)では、左右のラインセンサを比較し、線の上にいなければ右折し、線の上にいれば左折する。 |
<code> | <code> | ||
システム!"protchrm" 使う。 | システム!"protchrm" 使う。 | ||
- | 最初に実行=「 | + | |
- | プロッチ!停止。 | + | |
- | 」。 | + | |
繰り返し実行=「 | 繰り返し実行=「 | ||
「(左ラインセンサ!読む)<(右ラインセンサ!読む)」!なら「 | 「(左ラインセンサ!読む)<(右ラインセンサ!読む)」!なら「 | ||
ライン 314: | ライン 305: | ||
^ 命令 ^ 機能 ^ | ^ 命令 ^ 機能 ^ | ||
|読む |赤外線の反射量を0〜255の範囲で取得する| | |読む |赤外線の反射量を0〜255の範囲で取得する| | ||
- | |明るさ? |赤外線の反射量を0〜255の範囲で取得する| | ||
- | ### 3.7 距離センサの利用 | + | ### 3.7 超音波センサの利用 |
ここでは、プロッチの上部に接続する距離センサを用いた制御を行う。\\ | ここでは、プロッチの上部に接続する距離センサを用いた制御を行う。\\ | ||
プロッチに接続する距離センサは、超音波を発生し、その反射時間を用いて、反射物までの距離を測ることができる。\\ | プロッチに接続する距離センサは、超音波を発生し、その反射時間を用いて、反射物までの距離を測ることができる。\\ | ||
「超音波センサ」オブジェクトに対して**距離?**の命令を使うことで、プロッチの正面にあるモノまでの距離を測ることができる。\\ | 「超音波センサ」オブジェクトに対して**距離?**の命令を使うことで、プロッチの正面にあるモノまでの距離を測ることができる。\\ | ||
(なお、単位はmmとなる。)\\ | (なお、単位はmmとなる。)\\ | ||
- | 次のプログラムでは、障害物が近くになければ前進し、障害物に近づくと停止するプログラムである。 | + | 次のプログラム(protch%%_%%rm%%_%%distance.dtl)では、障害物が近くになければ前進し、障害物に近づくと停止するプログラムである。 |
ライン 328: | ライン 318: | ||
<code> | <code> | ||
システム!"protchrm"使う。 | システム!"protchrm"使う。 | ||
- | 最初に実行=「 | + | |
- | プロッチ!停止。 | + | |
- | 」。 | + | |
繰り返し実行=「 | 繰り返し実行=「 | ||
- | 「(超音波センサ!距離?)<40」!なら「 | + | 「(超音波センサ!距離?)<100」!なら「 |
プロッチ!1 停止。 | プロッチ!1 停止。 | ||
」そうでなければ「 | 」そうでなければ「 | ||
ライン 345: | ライン 333: | ||
**超音波センサの命令一覧** | **超音波センサの命令一覧** | ||
^ 命令 ^ 機能 ^ | ^ 命令 ^ 機能 ^ | ||
- | |読む |超音波センサの計測値をmmで取得する | | ||
|距離? |超音波センサの計測値をmmで取得する | | |距離? |超音波センサの計測値をmmで取得する | | ||
+ | |||
+ | ### 3.8 音楽演奏 | ||
+ | プロッチに搭載しているブザーを利用して音楽の演奏が可能である。次のプログラム(protch%%_%%rm%%_%%buzzer.dtl)では、ブザーを使ってドレミの音階を鳴らしている。 | ||
+ | |||
+ | **ブザーの命令一覧** | ||
+ | ^命令^機能^ | ||
+ | |演奏|引数の音階を演奏する| | ||
+ | |||
+ | <code> | ||
+ | システム! "protchrm" 使う。 | ||
+ | 最初に実行=「 | ||
+ | ブザー! "ドレミ" 演奏。 | ||
+ | 」。 | ||
+ | プロッチ! 転送。 | ||
+ | </code> | ||
+ | |||
+ | また、ブザーを用いてメロディの演奏が可能である。ここでは、譜面に相当するメロディオブジェクトに旋律を書き込み、それを演奏する。次のプログラム(protch%%_%%rm%%_%%melody.dtl)では、「きらきらぼし」という名前のメロディオブジェクトを生成し、「"..."」の形で旋律を追加してから、ブザーに演奏させている。 | ||
+ | |||
+ | **メロディの命令一覧** | ||
+ | ^命令^機能^ | ||
+ | |作る|メロディの旋律を作る| | ||
+ | |||
+ | <code> | ||
+ | システム!"protchrm"使う。 | ||
+ | 最初に実行=「 | ||
+ | きらきらぼし=メロディ!"ドドソソララソ・ファファミミレレド・ソソファファミミレ・ソソファファミミレ・ドドソソララソ・ファファミミレレド・" 作る。 | ||
+ | ブザー!(きらきらぼし) 演奏。 | ||
+ | 」。 | ||
+ | プロッチ! 転送。 | ||
+ | |||
+ | </code> | ||