#define BORDER 40 //光センサーの白黒を見分ける境値 task main () { SetSensor ( SENSOR_1, SENSOR_LIGHT ); //各センサーの設定 SetSensor ( SENSOR_2, SENSOR_TOUCH ); SetSensor ( SENSOR_3, SENSOR_LIGHT ); while ( flag < 6 ){ //3周(牛乳パックを6回迂回したら停止) if ( SENSOR_2 == 1 ){ //タッチセンサーが作動したとき OnRev(OUT_A+OUT_C); Wait(100); Off(OUT_A+OUT_C); OnFwd(OUT_A); OnRev(OUT_C); Wait(90); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); Wait(120); Off(OUT_A+OUT_C); OnFwd(OUT_C); OnRev(OUT_A); Wait(90); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); Wait(300); Off(OUT_A+OUT_C); OnFwd(OUT_C); OnRev(OUT_A); Wait(90); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); Wait(120); Off(OUT_A+OUT_C); OnFwd(OUT_A); OnRev(OUT_C); Wait(90); Off(OUT_A+OUT_C); Off(OUT_A); Wait(80); //牛乳パックを迂回して走行 flag++; //カウントを1増やす } else{ if ( SENSOR_1 > BORDER ){ if ( SENSOR_3> BORDER ){ OnFwd(OUT_A+OUT_C); //光センサーがどちらも白を完治しているときは前進 } else { OnFwd(OUT_A); OnRev(OUT_C); //右の光センサーが黒を完治したときは時計回りに回る } } else { if ( SENSOR_3> BORDER ){ OnFwd(OUT_C); OnRev(OUT_A); //左の光センサーが黒を完治したときは反時計回りに回る } else { OnFwd(OUT_A+OUT_C); } } } } } }
#define BORDER 40 //光センサーの白黒を見分ける境値 sub yokeru() { OnRev(OUT_A+OUT_C);Wait(100);Off(OUT_A+OUT_C);OnFwd(OUT_A); //少し後ろに下がりパックを置く OnRev(OUT_C);Wait(90);Off(OUT_A+OUT_C);OnFwd(OUT_A+OUT_C); //90度回転する Wait(120);Off(OUT_A+OUT_C);OnFwd(OUT_C);OnRev(OUT_A); Wait(90);Off(OUT_A+OUT_C);OnFwd(OUT_A+OUT_C); //直進 Wait(300);Off(OUT_A+OUT_C);OnFwd(OUT_C); //もう1回90度回転 OnRev(OUT_A);Wait(90);Off(OUT_A+OUT_C);OnFwd(OUT_A+OUT_C); //直進 Wait(120); Off(OUT_A+OUT_C);OnFwd(OUT_A);OnRev(OUT_C); //もう1回90度回転 Wait(90);Off(OUT_A+OUT_C);OnRev(OUT_C);OnRev(OUT_A);Wait(90);}//直進してもう1回90度回転してラインに乗る : パックの周りをコの字に迂回する task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); int flag=0; while(flag<12){ //3周(センサーが両方黒になったらカウントを1加える) if(SENSOR_1>BORDER) // ライントレース { if(SENSOR_3>BORDER){OnFwd(OUT_A+OUT_C);} else {OnFwd(OUT_A);OnRev(OUT_C);} } else { if (SENSOR_3>BORDER){OnFwd(OUT_C);OnRev(OUT_A);} else{OnFwd(OUT_A+OUT_C);flag++;} //カウントを1加える } // if(SENSOR_2==1) //センサーが反応したとき { //ライントレース OnFwd(OUT_A+OUT_C);Wait(90);flag++; //カウントを1加える until((SENSOR_1<BORDER)&&(SENSOR_3<BORDER)){ if(SENSOR_1>BORDER){ if(SENSOR_3>BORDER){OnFwd(OUT_A+OUT_C);} else {OnFwd(OUT_A);OnRev(OUT_C);} } // else{ if (SENSOR_3>BORDER){OnFwd(OUT_C);OnRev(OUT_A);}//パックを置く } } yokeru() //パックを避ける動作 flag++; // カウントを1加える } } Off(OUT_A+OUT_C);}
コメントよろしくお願いします。