アーム #define ARM_TIME 30 #define UP_TIME 70 task main(){ SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_TOUCH); Off(OUT_A+OUT_C); Wait(300); OnFwd(OUT_C); Wait(ARM_TIME); OnRev(OUT_C); Wait(ARM_TIME); Off(OUT_A+OUT_C); while(true){ ClearMessage(); if(SENSOR_1<37){SendMessage(4); Wait(50); Off(OUT_A+OUT_C); Wait(800); OnFwd(OUT_C); Wait(ARM_TIME); OnFwd(OUT_A); Wait(UP_TIME); if(SENSOR_3==0){SendMessage(1); Wait(50);Off(OUT_A+OUT_C); Wait(300); until(Message()!=0);} if(SENSOR_3==1){SendMessage(2); Wait(50);Off(OUT_A+OUT_C); Wait(300); until(Message()!=0);} } if(Message()==3){OnRev(OUT_C); Wait(ARM_TIME+30); OnRev(OUT_A);Wait(UP_TIME); } } } 足回り #define line_h_l while (SENSOR_3==0) {if(SENSOR_1<42){OnFwd(OUT_A); OnRev(OUT_C); Wait(10);} if(SENSOR_2<42){OnFwd(OUT_C); OnRev(OUT_A); Wait(10);} else{OnFwd(OUT_C+OUT_A); Wait(10);} if((SENSOR_1<43)&&(SENSOR_2<43)){OnFwd(OUT_C); OnRev(OUT_A); Wait(40); }} #define line_k_r while (SENSOR_3==0) {if(SENSOR_1<42){OnFwd(OUT_A); OnRev(OUT_C); Wait(10);} if(SENSOR_2<42){OnFwd(OUT_C); OnRev(OUT_A); Wait(10);} else{OnFwd(OUT_C+OUT_A); Wait(10);} if((SENSOR_1<43)&&(SENSOR_2<43)){OnFwd(OUT_A); OnRev(OUT_C); Wait(40); }} #define line_h_r while (Timer(0) <= 200) {if(SENSOR_1<42){OnFwd(OUT_A); OnRev(OUT_C); Wait(10);} if(SENSOR_2<42){OnFwd(OUT_C); OnRev(OUT_A); Wait(10);} else{OnFwd(OUT_C+OUT_A); Wait(10);} if((SENSOR_1<43)&&(SENSOR_2<43)){OnFwd(OUT_A); OnRev(OUT_C); Wait(40); }} #define line_k_l while (Timer(0) <= 200) {if(SENSOR_1<42){OnFwd(OUT_A); OnRev(OUT_C); Wait(10);} if(SENSOR_2<42){OnFwd(OUT_C); OnRev(OUT_A); Wait(10);} else{OnFwd(OUT_C+OUT_A); Wait(10);} if((SENSOR_1<43)&&(SENSOR_2<43)){OnFwd(OUT_C); OnRev(OUT_A); Wait(40); }} int i; int turn_time; task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_TOUCH); turn_time=15; i=0; OnFwd(OUT_A+OUT_C); Wait(50); OnRev(OUT_A+OUT_C); Wait(20); OnFwd(OUT_A+OUT_C); Wait(50); while(true){ ClearMessage(); ClearTimer(0); if(Message()==1){ if((i==1)||(i==3)||(i==5)) { Off(OUT_A+OUT_C); Wait(40); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_C); OnRev(OUT_A); Wait(200); OnFwd(OUT_A+OUT_C); Wait(10); line_h_l; SendMessage(3); Wait(50); Float(OUT_A+OUT_C); Wait(100); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A); OnRev(OUT_C); Wait(190); OnFwd(OUT_A+OUT_C); Wait(300); Off(OUT_A+OUT_C);} if((i==2)||(i==4)||(i==6)) { Off(OUT_A+OUT_C); Wait(40); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_C); OnRev(OUT_A); Wait(200); OnFwd(OUT_A+OUT_C); Wait(10); line_h_r; line_h_l; SendMessage(3); Wait(50); Float(OUT_A+OUT_C); Wait(100); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A); OnRev(OUT_C); Wait(190); OnFwd(OUT_A+OUT_C); Wait(300); Off(OUT_A+OUT_C);} else { Off(OUT_A+OUT_C); Wait(40); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_C); OnRev(OUT_A); Wait(210); OnFwd(OUT_A+OUT_C); Wait(150); line_h_l;SendMessage(3); Wait(50); Float(OUT_A+OUT_C); Wait(100); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A); OnRev(OUT_C); Wait(190); OnFwd(OUT_A+OUT_C); Wait(300); Off(OUT_A+OUT_C);}} if(Message()==2){ if((i==1)||(i==3)||(i==5)) { Off(OUT_A+OUT_C); Wait(40); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A); OnRev(OUT_C); Wait(200); OnFwd(OUT_A+OUT_C); Wait(10); line_k_r; SendMessage(3); Wait(50); Float(OUT_A+OUT_C); Wait(100); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_C); OnRev(OUT_A); Wait(200); OnFwd(OUT_A+OUT_C); Wait(300); Off(OUT_A+OUT_C);} if((i==2)||(i==4)||(i==6)) { Off(OUT_A+OUT_C); Wait(40); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A); OnRev(OUT_C); Wait(200); OnFwd(OUT_A+OUT_C); Wait(10); line_k_l; line_k_r; SendMessage(3); Wait(50); Float(OUT_A+OUT_C); Wait(100); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_C); OnRev(OUT_A); Wait(200); OnFwd(OUT_A+OUT_C); Wait(300); Off(OUT_A+OUT_C);} else{ Off(OUT_A+OUT_C); Wait(40); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A); OnRev(OUT_C); Wait(210); OnFwd(OUT_A+OUT_C); Wait(150); line_k_r; SendMessage(3); Wait(50); Float(OUT_A+OUT_C); Wait(100); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_C); OnRev(OUT_A); Wait(200); OnFwd(OUT_A+OUT_C); Wait(300); Off(OUT_A+OUT_C);}} if(Message()==4){ OnRev(OUT_A+OUT_C); Wait(40); OnFwd(OUT_A); OnRev(OUT_C); Wait(turn_time); turn_time =turn_time+10; i=i+1; OnFwd(OUT_A+OUT_C); Wait(45); OnRev(OUT_A+OUT_C); Wait(40); OnFwd(OUT_C); OnRev(OUT_A); Wait(turn_time); turn_time =turn_time+10; i=i+1;} } }