なるべく速く動かすために、回転動作を少なくして見ました。
task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); //光センサーの準備 int a; //直前のカーブでどちらに曲がったか(ラインを探す時間の短縮)を表す関数を導入 a=0; //aの初期設定(初めは右に曲がります) while(true) //ループするように設定 { if(SENSOR_2 <= 40) //センサーがラインの上にある { OnFwd(OUT_A+OUT_C); //直進 } else if(a==0) //センサーがラインを外れたとき1(直前のカーブで右に曲がったor初期) { ClearTimer(0); //曲がる時間をはかるタイマーをリセットする until(Timer(0)>1 || SENSOR_2 <= 40) //1秒回転するか、ラインの上に来るまで回転する { OnFwd(OUT_A); OnRev(OUT_C); } ClearTimer(0); until(Timer(0)>2 || SENSOR_2 <= 40) //逆回転 { OnFwd(OUT_C); OnRev(OUT_A); } a=0; } else { ClearTimer(0); until(Timer(0)>1 || SENSOR_2 <= 40) { OnFwd(OUT_C); OnRev(OUT_A); } ClearTimer(0); until(Timer(0)>2 || SENSOR_2 <= 40) { OnFwd(OUT_A); OnRev(OUT_C); } a=1; } } }
間違いあり。修正中
作成者&文責 蓮井