[リストへもどる]
一 括 講 読

投稿時間:03/01/06(Mon) 13:00
投稿者名:sheemer
Eメール:sheemer@ryukyu.ne.jp
URL :
タイトル:ROBOLABのループについて
sheemer@お昼休みです。ROBOLABのプログラミングについて
教えてください。

以下のようなプログラムを想定します。

・モーターで走る
・タッチセンサーが押されたら;
・バックして回避行動をして別の方向に走る
・同時に音楽を鳴らす

..=[タスク分岐]=[A]=[回避行動=[B]=[赤信号]
|
[音楽を鳴らす]=赤信号

・最初に[音楽を鳴らす]を[A]に置くと、音楽が鳴り止むまで
回避行動しない
・↑のように分岐し[A]を「着地」、[B]を「ジャンプ」にすると
音楽がなって赤信号になったところで回避行動側も終了してしまう
・[A]〜[B]をループにすると動くが、しかしループの回数制限は
プログラムとして美しくない
・スレッド間ジャンプは許されない

さて、音楽を鳴らしつつ回避行動を永続的に繰り返すには
どうしたらよいのでしょうか。

投稿時間:03/01/06(Mon) 13:24
投稿者名:JinSato
Eメール:
URL :
タイトル:Re: ROBOLABのループについて

ROBOLAB の辛いところが、タスクを動的にスタート&ストップを
書く方法が無いことなんですよね〜。(2.5で追加されていると
良かったのですが)

 しかし、RCXのファームウエアー自体にはタスクのスタート&
ストップができるので、NQCなんかで書く場合だと、招待物に触
れたときに音楽を鳴らすタスクをスタートしてやればそれでOKな
んですが、ROBOLABだと綺麗にかけないのと思います。

で、綺麗にかけないけど、泥縄方式だと
1つ目のタスクは障害物の回避高度の制御を書き。
2つ目のタスクは、スイッチとして使う変数が1になるまで
  待つような、モニターループとそれに続く音楽を鳴らを書く

それで、1つ目のタスクで音楽を鳴らしたい時に、該当のスイッチ
変数に1をいれてやってる。

タスク2は変数が1になったので、ループから抜けて音楽を鳴らす。
もちろん、その後に、変数をまた0にして、モニターループの先頭に
戻る。


実際に試してないですが、というような書き方はできると思います。



- Web Forum -