前回の実験でなんとなくわかってきたこと・・・
それは Sync ・・・同期です。
RotateMotorEx(OUT_AC,-60,300,20,true,true);
RotateMotorEx(OUT_AC,-60,300,0,true,true);
を実行すると・・・
右に曲がりながら前進して、途中から左に曲がりながら前進します。
(本当は、途中から直進するハズですが・・・)
で、
RotateMotorEx(OUT_AC,-60,300,20,true,true);
RotateMotorEx(OUT_AC,-60,300,0,false,true);
これを実行すると・・・
想定どおりに、途中から直進します。
私の想像だと・・・
sync:true に設定すると、左右のモーターの回転数を(無理やり)合わせようとするようです。
本来であれば、2つ目の命令の直進部分だけを合わせればよいものの・・・前の命令(右前に進む)の時からの回転数のズレを合わそうとしているようです。
だとすると・・・2つの命令を何かで区切ってくれると有りがたいのですが・・・何で区切れるのでしょうか?
(Wait文で区切れることは判りましたけど・・・そうすると一旦止まっちゃう)
とりあえず、連続する命令の2つ目には「同期する」を指定しなければ、直進することがわかりました。
例えば
RotateMotorEx(OUT_AC,-60,300,20,true,true);
RotateMotor(OUT_AC,-60,300);
これなら、想定どおりの動作になります。