目次
#Contents
*課題2の内容 [#ifff3ad7]
#ref(2016b/Member/god22ila/Mission2/2016b-mission2.png,50%,コース)
今回の課題2の内容は上図のコースにライントレーサーを走らせ、途中に置いてあるピンポン球を掴み、ゴールにシュートするというものである。僕はA地点をスタート→P地点直進→Q地点直進→ピンポン球を掴む→Q地点直進→R地点右折→P地点直進→S地点左折→D地点へシュートというものである。
*ロボットの説明 [#r97767b5]
**本体について [#he30576e]
**アームについて [#t2a53cfc]
*プログラミングについて [#t3de1858]
 #define turnright OnFwd(OUT_C,40);
 #define turnleft OnFwd(OUT_B,40);
 #define SR OnFwdSync(OUT_BC,40,-100);
 #define SL OnFwdSync(OUT_BC,40,100);
 #define gomae OnFwdSync(OUT_BC,40,0);
 #define XrdTR TR Wait(500);SL Wait(1400);Off(OUT_BC);Wait(300);GF   Wait(500);Off(OUT_BC);n++;
 #define XrdST TR Wait(1000); GF Wait(200);n++;
 #define armup OnFwd(OUT_A,25);Wait(700);Off(OUT_A);
 #define armdown OnRev(OUT_A,25);Wait(700);Off(OUT_A);
 #define XX PlaySound(SOUND_CLICK);Wait(500);Wait(1000);
**センサーとタイマーの起動 [#eb19429c]
 task main()
 {
  SetSensorLight(S1);//光センサー起動
  int n=0;
  long t0 = CurrentTick();//時間を測り始める直前の時刻をt0に代入する
  armup//アームを上げる
まず、タイマーと光センサーを起動させる
  while(n<7){
  t0 = CurrentTick();
  while(CurrentTick()-t0<600){  //CurrentTick()とt0の差が0.6秒以下の時
   if(SENSOR_1>42){  //もしセンサーの値が42以上だったら左に旋回してタイマーをリセット
     senkaileft
     t0 = CurrentTick();
    }

   else if(SENSOR_1>40){  //もしセンサーの値が40以上なら左に曲がりタイマーをリセット
     turnleft
     t0 = CurrentTick();
    }
                         
   else if(SENSOR_1>38){   //もしセンサーの値が38以上なら前進してタイマーをリセット
     gomae
     t0 = CurrentTick();
    }

   else if(SENSOR_1>37){  //もしセンサーの値が37以上なら右に曲がりタイマーをリセット
     turnright
     t0 = CurrentTick();
    }
   else{
     senkairight
    }
   }
  Off(OUT_BC);



  while(n==6){
       XrdST
       Off(OUT_BC);
       armup
       OnFwdSync(OUT_BC,40,0);
       Wait(300);
       n++;
       }
アームを上げてそのまま本体で押し込んでシュート
   while(n==5){
      SR
     Wait(700);
     n++;  //変えた
        }
   while(n==4){
       XX
       XrdST
        }
   while(n==3){
       XrdTR
        }
   while(n==2){
       XX
       XrdST
        }
   while(n==1){
       XX
       XrdST
        PlaySound(SOUND_CLICK);
        Wait(500);
       t0 = CurrentTick();
       while(CurrentTick()-t0<6000){
       if(SENSOR_1>42){
        SL
        }
       else if(SENSOR_1>40){
        turnleft
        }
       else if(SENSOR_1>38){
        GF
        }
        else if(SENSOR_1>37){
         turnright
        }
       else{
        SR
        }
        }
       Off(OUT_BC);
       Wait(500);
       armdown
        }
  while(n==0){
       XX
       XrdST  //変えた
        }
 }
 }

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