詳しくはこちら
(この後、3,4あたりに集まることが決まる)
#define THERESHOLD 40 //闘値 #define KAI_S 100 //回転する秒数 task main () //親機の動作 { int kousa=0; //交差点の数を数える変数 SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1は光学センサー SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3は光学センサー while(GO<1){ if (SENSOR_1>THERESHOLD){ if (SENSOR_3>THERESHOLD){ OnFwd(OUT_A+OUT_C); } else { Off(OUT_C); OnFwd(OUT_A); } } else { if (SENSOR_3>THERESHOLD){ OnFwd(OUT_C); Off(OUT_A); } else { //交差点に突入 kousa=kousa+1; if (kousa==1){ Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); //前進 Wait(30); Off(OUT_A+OUT_C); } if (kousa==2){ OnFwd(OUT_A+OUT_C); //前進 Wait(40); Off(OUT_A+OUT_C); usetsu(); //右折 } if (kousa==3){ OnRev(OUT_A+OUT_C); //後退 Wait(30); Off(OUT_A+OUT_C); usetsu(); //右折 OnFwd(OUT_A+OUT_C); //前進 Wait(145); Off(OUT_A+OUT_C); sasetsu(); //左折 OnFwd(OUT_A+OUT_C); //前進 Wait(50); Off(OUT_A+OUT_C); PlaySound(SOUND_UP) ; //ここまで来たら音で知らせる Wait(500); OnRev(OUT_A+OUT_C); //後退し、橋を回収する Wait(500); Off(OUT_A+OUT_C); } } } } } sub usetsu() //右折 { OnFwd(OUT_A); OnRev(OUT_C); Wait(95); Off(OUT_A+OUT_C); } sub sasetsu() //左折 { OnRev(OUT_A); OnFwd(OUT_C); Wait(KAI_S); Off(OUT_A+OUT_C); }
#define A OUT_A #define B OUT_B #define C OUT_C task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); Wait(1200); //待機時間 OnFwd(B);Wait(30);OnFwd(A+C);Wait(400);OnRev(B);Off(A+C); Wait(150); //壁を越える OnRev(A+C);Wait(70);Off(A+C);Wait(30);OnFwd(C);OnRev(A);Wait(80);Off(A+C);OnFwd(A+C);Wait(70);Off(A+C);Wait(40); OnRev(A);OnFwd(C);Wait(60);;Off(A+C);OnFwd(A+C);Wait(60);Off(A+C);Wait(20);OnFwd(B);Wait(30);OnRev(A+C);Wait(40);Off(A+C);Wait(30); /パックをつかむ start hanten; //ゴールにいれる。 } task hanten() { OnRev(A);OnFwd(C);Wait(150);Off(A+C);OnFwd(A+C);Wait(200);Off(A+C+B); }