ドリトルでプログラム
ホーム | パーツ | 工作例 | ロボコン | ロボット教室 | ロボット制御
メロディのプログラム | センサープログラム | RCサーボの制御 | 入出力プログラム | モーターのPWM制御 | LEDの制御
MYU BASIC | MYUROBO転送ソフト | 構造化ドリトル | ミュウアセンブラ | PIC16F688 | MYUROBO-2基板
ミュウロボ命令一覧 | ミュウアセンブラ一覧 | 構造化ドリトル制御命令一覧
ドリトルは学校教育(小中高)の入門用プログラミング言語です。 最新のオブジェクト指向の考え方でプログラムを学ぶことができます。ドリトルには標準でMYUオブジェクトが用意されていて簡単に制御プログラムを書くことができます。ドリトル入門はこちら!

●ドリトルでプログラム
ドリトル画面から編集画面タグをクリックしてからプログラムを書いていきます。
読込ボタンを押しmyusample1.dtlを読み込んでみましょう。編集画面タグをクリックすれば下の画面になります。

これが制御プログラムです。ロボットとパソコンを接続してプログラムを転送してみましょう。ロボットのスイッチを入れ実行ボタンを押すと、しばらくして'ピ'・・と音がして転送が始まります。最後に'ピピ'と鳴れば転送終了です。
このプログラムはロボットのリミットスイッチを押すとスタートし基板のスイッチを切るまで動き続けます。
こちらがmyusample1.dtlの実行動画(344KB)です。

//myusample1.dtl のプログラム解説です。ミュウロボ命令一覧と合わせてご覧ください。
//前進2秒、右回り0.5秒、停止してメロディ これを繰り返す '//'以後は次の行まで何も実行しません。メモ・注釈として使います。
ロボ太=MYU!作る。                     //シリアル転送用のMYUオブジェクト:ロボ太を作ります。(ドリトルV1.25以降の場合)
ロボ太:転送命令=「!はじめロボット              //ロボ太のメソッド:転送命令に「」内の命令をセット。「」内の最初には、'!はじめロボット'を指定しなければならない。
20 0 ブロック繰り返し                       //ブロック番号20を無限に呼び続けます。
10 ブロックはじめ     //メロディ               ブロック番号10を宣言し'ブロックおわり'までの間にプログラムを書きます。
  2 48 電子音 2 46 電子音 2 44 電子音 2 42 電子音   //パルス幅48で時間2(0.2秒)の電子音を出します。
  2 40 電子音 2 38 電子音 2 36 電子音 2 34 電子音
ブロックおわり                            //ブロックのおわりを宣言します。
20 ブロックはじめ      //前進2秒、右回り0.5秒、停止、メロディの呼び出し
  20 前進 5 右回り 0 停止                   //前進20(2秒)した後、右回り5(0.5秒)、そして停止
  10 2 ブロック繰り返し                    //ブロック番号10を2回呼び出します。ブロック内から他のブロック呼び出しは深さ8レベルまで可能。
ブロックおわり
おわりロボット」。                          //「」内の最後には'おわりロボット'を指定しなければならない。
ロボ太! ”com1"ひらけごま。                 //シリアルポートの1番を開きます。2番は"com2"となる。
ロボ太!転送命令。                        //シリアルポートにメソッド:転送命令を実行(送信)。
ロボ太!とじろごま。                       //シリアルポートを閉じる。

前進と右回りの引数を変更してみましょう。動きが変わるはずです。プログラムを変更したら保存ボタンを押してセーブしておきましょう。

●ブロックについて
ブロックはじめからブロックおわりまでをブロックとよびます。ミュウロボ制御基板の場合、ブロックには1から127までのブロック番号をつけ他のブロックと区別します。ブロック番号の重複(同じブロック番号を付けること)は禁止です。
ブロックは制御プログラム内(はじめロボットからおわりロボットまでの間)のどこに在ってかまいませんが、そのままではなにも実行しません。ブロック実行やブロック繰り返し命令を使うことで実行されます。なお、ブロック内から他のブロックの呼出しは深さ8レベルまで可能です。
下はmyusample1.dtlのブロックを並べ変えたものです。上の例とまったく同じ動作をします。
ミュウアセンブラを使うとブロック内から自分自身を呼び出す再帰プログラムも可能です。

//前進2秒、右回り0.5秒、停止してメロディ これを繰り返す
ロボ太=MYU!作る。
ロボ太:転送命令=「!はじめロボット
20 ブロックはじめ      //前進2秒、右回り0.5秒、停止、メロディの呼び出し
  20 前進 5 右回り 0 停止
  10 2 ブロック繰り返し
ブロックおわり
10 ブロックはじめ     //メロディ
  2 48 電子音 2 46 電子音 2 44 電子音 2 42 電子音
  2 40 電子音 2 38 電子音 2 36 電子音 2 34 電子音
ブロックおわり

20 0 ブロック繰り返し
おわりロボット」。
ロボ太! ”com1"ひらけごま。
ロボ太!転送命令。
ロボ太!とじろごま。

●アンカーとジャンプ
制御プログラム内にアンカー番号を宣言することでプログラムの途中からそのアンカー番号にジャンプできます。アンカーには1から127までのアンカー番号をつけ他のアンカーと区別します。アンカー番号の重複は禁止ですがアンカー番号とブロック番号の重複は可能です。またブロック内からの飛び出しジャンプや飛び込みジャンプは禁止です。同じブロック内でのジャンプは可能です。
下はmyusample1.dtlのブロック繰り返し部分をアンカーとジャンプを使ってプログラムしたものです。上の例とまったく同じ動作をします。

//前進2秒、右回り0.5秒、停止してメロディ これを繰り返す
ロボ太=MYU!作る。
ロボ太:転送命令=「!はじめロボット
10 アンカー        //アンカー番号10を宣言
  20 ブロック実行
10 ジャンプ        //アンカー番号10にジャンプ ブロック番号20を無限に呼び続ける
10 ブロックはじめ     //メロディ
  2 48 電子音 2 46 電子音 2 44 電子音 2 42 電子音
  2 40 電子音 2 38 電子音 2 36 電子音 2 34 電子音
ブロックおわり
20 ブロックはじめ      //前進2秒、右回り0.5秒、停止、メロディの呼び出し
  20 前進 5 右回り 0 停止
  10 2 ブロック繰り返し
ブロックおわり
おわりロボット」。
ロボ太! ”com1"ひらけごま。
ロボ太!転送命令。
ロボ太!とじろごま。

//<制御プログラムのテンプレート>
ロボ太=MYU!作る。
ロボ太:転送命令=「!はじめロボット

 //ここに制御プログラムを書く 命令一覧はこちら

おわりロボット」。
ロボ太! ”com1"ひらけごま。
ロボ太!転送命令。
ロボ太!とじろごま。