task main () { SetSensor (SENSOR_1, SENSOR_TOUCH); //left SetSensor (SENSOR_3, SENSOR_TOUCH); //right ClearTimer (0); while (Timer (0) < 600) //時間制限 { SetPower(OUT_A+OUT_C, OUT_FULL); while (SENSOR_1==1 && SENSOR_3==0) //壁に沿っている { Off (OUT_A+OUT_C); OnFwd (OUT_A+OUT_C); } while (SENSOR_1==0 && SENSOR_3==0) //壁から離れた { Off (OUT_A+OUT_C); OnFwd (OUT_C); OnRev (OUT_A); Wait (10); OnFwd (OUT_A+OUT_C); Wait (10); } while (SENSOR_1==0 && SENSOR_3==1) //向きがおかしい { Off (OUT_A+OUT_C); OnFwd (OUT_A); } if (SENSOR_1==1 && SENSOR_3==1) //曲がり角にぶつかった { OnRev (OUT_A+OUT_C); Wait (15); OnFwd (OUT_A); OnRev (OUT_C); Wait (120); Off (OUT_A+OUT_C); } } Off (OUT_A+OUT_C); }
壁に当たって左側のセンサが反応しているときは直進する。センサーが壁から離れたら、壁の方に曲がっていく。両方のセンサーが反応したら壁にぶつかっているので、少し後退して右に約90°曲がる。右側のセンサーのみが反応しているときは逆走しかけているので右に曲がって壁にぶつけて方向を直している。