アーム
#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;}   
  } 
} 
    
  
  
 



トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS