- 追加された行はこの色です。
- 削除された行はこの色です。
ロボコン
*ロボコンについて
*ロボコンについて [#u30ae257]
[[概要>2006b/A4/概要]]
*ロボット [#oe7f4bf4]
*プログラム [#fe82c9cc]
アーム第一稿
[[第一稿>2006b/A4/第一稿]]
#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
[[第二稿>2006b/A4/第二稿]]
task main(){
[[第三稿>2006b/A4/第三稿]]
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;}
}
}
}