TL; DR =プログラムと並行して2回追加されたMyBlockがそのうちの1つだけを実行する明らかな理由はありますか?
EV3-Gプログラムでは、近接ヘディングを使用してモーターを制御し、ヘディングが常に真っ直ぐになるようにするMyBlock。 (近づくと遅くなるなど、複雑さが増します。)
私のロボットアームには2つの赤外線センサーがあります。1つは水平に取り付けられ、もう1つは垂直に取り付けられているため、アームは常にビーコン...そしてMyBlockはパラメータで設定されているので、対応するポート/モーター番号が渡されます。
並列に実行されている2つのMyBlockが、一方でのみ機能する理由はありますか?それらのブロックであり、他のブロックではありませんか? (デバッグ時には、両方のブロックが「きらめき」、両方が明らかに実行されていることを示します。)
すべてのフロー制御、センサー、およびアクションが正しいパラメーターで機能していることを2倍から4倍にチェックしました。値を設定し、各ブロックを個別に実行すると完全に機能します。
また、新しいプログラムでブロックを(非常に長い間)複製しましたが、問題なく機能します。
2つのブロックが必要な理由プログラムで複製された同じコードが機能する場合、並行して実行しても機能しませんか?
UPDATE
要求どおり(元々実行する必要がありました) 。
これがMyBlockです。センサーポート、モーターポート、「オフセット」の3つのパラメーターで始まります。すべて数値です。ループが開始され、方向見出しの読み取りが行われます。次に、「offset」値を使用して、「offet-5」と「offet +5」を範囲に渡します
範囲のブール値に基づきます、現在の見出し値が範囲内にある場合、見出し値に基づいて「段階的な」速度でモーターを実行します。したがって、0に近づくと、モーターの動作が遅くなります。
現在の方位値が範囲外の場合、モーターは非可変速度...この場合、値が「オフセット」値を下回っている場合。
この場合、値が「オフセット」値を超えている場合。
プログラムは単に2つを呼び出します。 MyBlockのインスタンス。左を実行すると、水平方向の検出と移動は問題なく機能します。右を実行すると、垂直方向の検出と移動は問題なく機能します。
しかし、以下を実行すると、最後に配線されたMyBlockのみが機能します。文字通り、一方向のモーターからの動きがあります。