前回、90度右回転、90度左回転でスタート地点で止まるプログラム
RotateMotor(OUT_B,60,76);
RotateMotor(OUT_B,60,-63);
を紹介しました。
一回毎に、プログラムを実行してみると、確かに目的の動作をします。
しかし・・・
この2行ループで繰り返してみると・・・
どんどんズレていきます。
90度右回転して、90度左回転してスタート地点に戻ります。
次に90度回転するハズが90度を越えます(104度!?)。その後90度左回転します。
右回転が、104度、左回転が90度なので、どんどん右にズレて行きます。
何で!?
そうすると、最初だけ
RotateMotor(OUT_B,60,76);
RotateMotor(OUT_B,60,-63);
で、2回目以降は
RotateMotor(OUT_B,60,63);
RotateMotor(OUT_B,60,-63);
にすればいいんじゃない・・・
プログラムを実行してみると・・・(想像通り)・・・
おぅ、やっと、90度と0度を往復しました。
じゃあ、90度回転した後に、さらに90度回転させるには・・・
最初は
RotateMotor(OUT_B,60,76);
次に
RotateMotor(OUT_B,60,76);
かなぁ・・・・これじゃ、回転が足りない・・・
RotateMotor(OUT_B,60,90);
これで、90度回転しました。
なんとなく、分かったことは・・・
・最初に右に90度回転させるためには76度を指定する
・続けて右に90度回転させるためには90度を指定する
・右回転の後に左に90度回転させるためには -63度を指定する。
・続けて左に90度回転させるためには、-90度を指定する。
なるほど・・・・さらにまとめると・・・
・最初に右に90度回転したいときは76度
・最初に左に90度回転したいときは -76度
・右に回転した後に、続けて右に90度回転するときには90度
・左に回転した後に、右に90度回転するときには63度
ということで、最初の回転か、前回の回転方向によって指定する角度を変える必要があることが分かりました。
めっちゃ、面倒くさい!!