ロボコン
 *ロボコンについて
*ロボコンについて [#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;}
     }
   } 
}


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS