ロボコン *ロボコンについて *ロボット [#oe7f4bf4] *プログラム [#fe82c9cc] アーム第一稿 #define ARM_TIME 25 #define UP_TIME 25 task main(){ SetSensor(SENSOR_1,SENSOR_TOUCH); SetSensor(SENSOR_2,SENSOR_TOUCH); while(true){ ClearMessage(); if((SENSOR_1==1)&&(SENSOR_2==1)) {SendMessage(2); OnFwd(OUT_A); Wait(ARM_TIME); OnFwd(OUT_B); Wait(UP_TIME);Off(OUT_A+OUT_B);} if( (SENSOR_1==1)) {SendMessage(1); OnFwd(OUT_A); Wait(ARM_TIME); OnFwd(OUT_B); Wait(UP_TIME);Off(OUT_A+OUT_B);} if(Message()==3){OnRev(OUT_B); Wait(25); OnRev(OUT_A); Wait(30);Off(OUT_A+OUT_B);} } } 足回り第一稿 #define line_1 while ( Timer(2) <= 60 ) { if(SENSOR_1<40){OnFwd(OUT_A);OnRev(OUT_C); Wait(5);}if(SENSOR_2<40){OnFwd(OUT_C);OnRev(OUT_A);Wait(5);}else{OnFwd(OUT_A+OUT_C);} } #define line_2 while ( Timer(2) <= 20 ) { if(SENSOR_1<40){OnFwd(OUT_A);OnRev(OUT_C); Wait(5);}if(SENSOR_2<40){OnFwd(OUT_C);OnRev(OUT_A);Wait(5);}else{OnFwd(OUT_A+OUT_C);} } #define line_3 while ( Timer(0) <= 80 ) { if(SENSOR_1<40){OnFwd(OUT_A);OnRev(OUT_C); Wait(5);}if(SENSOR_2<40){OnFwd(OUT_C);OnRev(OUT_A);Wait(5);}else{OnFwd(OUT_A+OUT_C);} } int turn_time; task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); turn_time=10; while(true){ ClearMessage(); ClearTimer(0); ClearTimer(1); ClearTimer(2); OnFwd(OUT_A+OUT_C); Wait(30); if(Message()==1) { Off(OUT_A+OUT_C); Wait(60); OnRev(OUT_A+OUT_C); Wait(15); OnFwd(OUT_C); OnRev(OUT_A); Wait(80); OnFwd(OUT_A+OUT_C); Wait(10); line_1; OnFwd(OUT_A+OUT_C); if(SENSOR_3<40){OnFwd(OUT_C); OnRev(OUT_A); Wait(30);} line_2; SendMessage(3); Float(OUT_A+OUT_C); Wait(60); OnRev(OUT_A+OUT_C); Wait(20); OnFwd(OUT_A); OnRev(OUT_C); Wait(40); line_3;} if(Message()==2) { Off(OUT_A+OUT_C); Wait(60); OnRev(OUT_A+OUT_C); Wait(15); OnFwd(OUT_A); OnRev(OUT_C); Wait(80); OnFwd(OUT_A+OUT_C); Wait(10); line_1; OnFwd(OUT_A+OUT_C); if(SENSOR_3<40){OnFwd(OUT_A); OnRev(OUT_C); Wait(30);} line_2; SendMessage(3); Float(OUT_A+OUT_C);Wait(60);OnRev(OUT_A+OUT_C);Wait(20); OnFwd(OUT_C); OnRev(OUT_A); Wait(40);line_3;} else{while(Message()!=0){OnFwd(OUT_A+OUT_C); Wait(35); OnRev(OUT_A+OUT_C); Wait(30); OnFwd(OUT_A); OnRev(OUT_C); Wait(turn_time); turn_time =turn_time+5; OnFwd(OUT_A+OUT_C); Wait(35); OnRev(OUT_A+OUT_C); Wait(30); OnFwd(OUT_C); OnRev(OUT_A); Wait(turn_time); turn_time =turn_time+5;} } } } 第二稿 アーム #define ARM_TIME 35 #define UP_TIME 35 task main(){ SetSensor(SENSOR_1,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_TOUCH); while(true){ ClearMessage(); if((SENSOR_1==1)&&(SENSOR_3==1)) {SendMessage(2); OnFwd(OUT_A); Wait(ARM_TIME); OnFwd(OUT_C); Wait(UP_TIME);Off(OUT_A+OUT_C);} if( (SENSOR_3==1)) {SendMessage(1); OnFwd(OUT_A); Wait(ARM_TIME); OnFwd(OUT_C); Wait(UP_TIME);Off(OUT_A+OUT_C);} if(Message()==3){OnRev(OUT_C); Wait(35); OnRev(OUT_A); Wait(40);Off(OUT_A+OUT_C);} } } 足 #define line_h_l while (Timer(0) <= 260) {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 (Timer(0) <= 260) {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_1 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); }} #define line_h_r_2 while (Timer(1) <= 70) {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_1 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); }} #define line_k_l_2 while (Timer(1) <= 70) {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); }} int i; int turn_time; task hako_l() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_LIGHT); while(true){ ClearMessage(); ClearTimer(0); Off(OUT_A+OUT_C); Wait(400); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_C); OnRev(OUT_A); Wait(200); OnFwd(OUT_A+OUT_C); Wait(20); line_h_l; SendMessage(3); Float(OUT_A+OUT_C); Wait(400); 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);} } task hako_r() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_LIGHT); while(true){ ClearMessage(); ClearTimer(0); ClearTimer(1); Off(OUT_A+OUT_C); Wait(400); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_C); OnRev(OUT_A); Wait(200); OnFwd(OUT_A+OUT_C); Wait(20); line_h_r_1; line_h_r_2;SendMessage(3); Float(OUT_A+OUT_C); Wait(400); 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);} } task kann_r() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_LIGHT); while(true){ ClearMessage(); ClearTimer(0); Off(OUT_A+OUT_C); Wait(400); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A); OnRev(OUT_C); Wait(200); OnFwd(OUT_A+OUT_C); Wait(20); line_k_r; SendMessage(3); Float(OUT_A+OUT_C); Wait(400); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_C); OnRev(OUT_A); Wait(200); OnFwd(OUT_A+OUT_C); Wait(450); Off(OUT_A+OUT_C);} } task kann_l() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_LIGHT); while(true){ ClearMessage(); ClearTimer(0); Off(OUT_A+OUT_C); Wait(400); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A); OnRev(OUT_C); Wait(200); OnFwd(OUT_A+OUT_C); Wait(20); line_k_l_1; line_k_l_2; SendMessage(3); Float(OUT_A+OUT_C); Wait(400); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_C); OnRev(OUT_A); Wait(200); OnFwd(OUT_A+OUT_C); Wait(450); Off(OUT_A+OUT_C);} } task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_LIGHT); turn_time=20; i=0; while(true){ ClearMessage(); ClearTimer(0); OnFwd(OUT_A+OUT_C);until(Message()!=0); if((Message()==1)&&((i==1)||(i==3)||(i==5)||(i==7))) {start hako_l;} if((Message()==1)&&((i==0)||(i==2)||(i==4)||(i==6))) {start hako_r;} if((Message()==2)&&((i==1)||(i==3)||(i==5)||(i==7))) {start kann_r;} if((Message()==2)&&((i==0)||(i==2)||(i==4)||(i==6))) {start kann_l;} else{while(Message()!=0){OnFwd(OUT_A+OUT_C); Wait(55); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A); OnRev(OUT_C); Wait(turn_time); turn_time =turn_time+10; i=i+1; OnFwd(OUT_A+OUT_C); Wait(55); OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_C); OnRev(OUT_A); Wait(turn_time); turn_time =turn_time+10;} } } }