WeDo2.0のMモータープログラムで予期しない動作を回避する方法
小学低学年に最適なレゴのロボット教材であるWedo2.0。
プログラムでモーターを動かすと、動作のはじめに一瞬ですが、プログラムで指定したパワーや向きと異なる動作をすることがあります。ロボットの位置がズレてしまったり、反対方向に動くことでパーツ同士が干渉してしまい、ハードウェアに無理がかかってしまうこともあります。
こんな時、ちょっとしたコツのようなものを知っていれば、異なる動作を挟んでしまうことを回避することができます。
現象
WeDo2.0のモーターをプログラムで動かすと、動作のはじめに一瞬ですが、プログラムで指定したパワーや向きと異なる動作をすることがあります。
例をあげて説明します。
上プログラム例の左のプログラムを実行した後、右のプログラムを実行すると、右のプログラムはモーターは左回転の指示をしていますが、実際には動作のはじめの一瞬、右回転することがあります。
同様に、上プログラム例の左のプログラムを実行した後、右のプログラムを実行すると、右のプログラムはモーターは「スピード:3」の指示をしていますが、実際には動作のはじめの一瞬、「スピード:8」で回転することがあります。
僅かとはいえ、意図した方向とは逆に動いてしまったり、正確な動作とは言えません小学低学年の子供が制作し強度が十分ではないモデルの場合、逆方向に回転することでモデルが崩れてしまうこともあります。いずれにしても、意図しない動作は避けたいところです。
原因
これには、2つの理由があります。
1つ目の理由は。WeDo2.0が「前回の動作を記憶」してることにあります。上の最初例ではモーターの回転方向を、2番目の例では回転速度を記憶しています
2つ目の理由は、WeDo2.0の処理速度が遅いためです。プログラムの中でパワーや向きを設定する前に、パワーモーターが前回動かしたときのパワーや向きで動き出してしまうことがあります。上の最初の例では、1番目のブロックで回転スピードを処理していますが、まだ2番目の処理である回転方向(左)の処理をする前に、前回の記憶である回転方向(右)が一瞬だけ処理され、その後で回転方向(左)の処理がされてしまいます。回転スピードの場合も同様です。
対処法
では、どうすればこうした誤った処理を防ぐことができるのか。プログラムブロックの順番を工夫することで、意図しない処理を防ぐことができます。
上の例では回転方向または回転スピードについて、優先したい処理のブロックを一番最初に配置するよ
多くの場合は回転方向を優先した対策になるかと思いますが、優先したい処理が回転方向なのか、回転スピードなのかを明確にするようにしましょう(処理が異なるのは一瞬ですので、小学低学年の作るプログラムでは、回転スピードが大きな影響を与えるケースは少ないと思います)。