[[2009a/A8/課題2右]] #define THRESHOLD 44 task main () { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); while (true) { //両方黒なら止まって押さえを上げる if (SENSOR_1<THRESHOLD){ if (SENSOR_3<THRESHOLD){ Wait(100); OnRev(OUT_B); Wait(1); #define migi 40 #define hidari 50 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); int flag=0; while(flag<36){ //36回交差点を通過して終了 if(SENSOR_1>hidari){ //ライントレース if(SENSOR_3>migi) {OnFwd(OUT_A+OUT_C);} else {OnFwd(OUT_A); OnRev(OUT_C);} } if (SENSOR_2 == 1 ) //タッチしたら押さえを下げる { OnFwd(OUT_B) ; Wait(1); } else{ if (SENSOR_1+SENSOR_3<THRESHOLD){ //ライントレース OnRev(OUT_A); Wait(5); else{ if (SENSOR_3>migi){OnFwd(OUT_C); OnRev(OUT_A);} else{OnFwd(OUT_A+OUT_C); flag++;} //交差点を通過したらflagに1足す } if(SENSOR_2==1) //障害物に触れたら { OnRev(OUT_B);Wait(50); //枠を下げる Off(OUT_B); OnFwd(OUT_A+OUT_C);Wait(90); flag++; //flagに1足す until((SENSOR_1<hidari)&&(SENSOR_3<migi)){ //光センサーがどちらも黒になるまでライントレース if(SENSOR_1>hidari){ if(SENSOR_3>migi){OnFwd(OUT_A+OUT_C);} else {OnFwd(OUT_A);OnRev(OUT_C);} } if (SENSOR_1>THRESHOLD){ if(SENSOR_3>THRESHOLD){ OnFwd(OUT_A+OUT_C); } else { OnFwd(OUT_A); Off(OUT_C); } } else{ if(SENSOR_3>THRESHOLD){ OnRev(OUT_A); OnFwd(OUT_C); } } } } } } else{ if (SENSOR_3>migi){OnFwd(OUT_C);OnRev(OUT_A);}//もしどちらも黒なら以下の命令を実行 } } Off(OUT_A+OUT_C);Wait(100); //枠をあげる OnRev(OUT_A+OUT_C);Wait(50); OnFwd(OUT_B);Wait(50); Off(OUT_B); OnRev(OUT_A+OUT_C);Wait(25); //障害物を迂回する Off(OUT_A+OUT_C);Wait(50); OnRev(OUT_A); OnFwd(OUT_C);Wait(90); Off(OUT_A+OUT_C);Wait(50); OnFwd(OUT_A+OUT_C);Wait(180); Off(OUT_A+OUT_C);Wait(50); OnFwd(OUT_A); OnRev(OUT_C);Wait(90); Off(OUT_A+OUT_C);Wait(50); OnFwd(OUT_A+OUT_C);Wait(330); Off(OUT_A+OUT_C);Wait(50); OnFwd(OUT_A); OnRev(OUT_C);Wait(90); Off(OUT_A+OUT_C);Wait(50); OnFwd(OUT_A+OUT_C);Wait(180); Off(OUT_A+OUT_C);Wait(50); OnRev(OUT_A); OnFwd(OUT_C);Wait(90); Off(OUT_A+OUT_C);Wait(50); OnRev(OUT_A+OUT_C);Wait(40); Off(OUT_A+OUT_C);Wait(50); flag++; //flagに1足す } } Off(OUT_A+OUT_C);}