質問

エンジニアリングクラスのロボットを開発しています。クラスの目的のために、NXTプログラミング言語を使用する必要があります。移動するには、ロボットはしっかりした黒い線に従う必要があります。

ロボットがラインを緩めた場合、1秒間左にスキャンするか、黒い線に達するまでスキャンします。ラインが見つからない場合は、2秒間右にスキャンして初期位置に到達し、さらに1秒または回転が達成されます。

ラインが見つからない場合、ロボットが動き続けるようにループをセットアップしています。それは完全な1秒の期間にわたって実行されます。ラインが見つかった場合、モーションは停止しますが、完全な秒はまだ完了する必要があります。最終的には、それは私のプログラムが完全に機能することを意味しますが、本当に遅いことを意味します。

TL; DR LEGOマインドストームプログラミング環境で2つの出口条件でループを作成する方法はありますか? 1秒後に経過した後、またはセンサーが目的の入力を取得しますか?

役に立ちましたか?

解決 3

マインドストームには、または関数がありません。

解決策は、Exit変数を作成し、2つのスイッチステートメントを作成することです。上記の例では、タイマーを備えた1つのスイッチステートメントがあり、もう1つはセンサー出力を備えていました。 exit変数をfalseに設定し、その後、whileループ内で、exit変数がtrueになるまで実行します。

タイマーの有効期限が切れた場合は、変数をtrueに設定します。そうでなければ、exit変数を無視します。センサーの出力でも同じことをします。

これは乱雑でかなり長い解決策ですが、かなり限られたレゴマインドストームシステム内で問題を完全に解決します。

他のヒント

最後の2つのブロックは、「または」に設定されたロジックブロックです。この場合、3つのセンサーが監視されています。いずれかの人がつまずいた場合、プログラムはループから抜け出します。

.

これは86ページからです http://www.hightechkids.org/sites/default/files/coachinglibrary/fll_programming_101_nxt_g.pdf

あなたができることは、タイムアウトを短くする(たとえば100ミリ秒)にし、ラインが見つかった場合、またはループが10回実行された場合に停止することです。

私はマインドストームの専門家ではありませんが、それがまたは機能することを期待しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top