[[2016b/Member]]
 #define go_go OnFwd(OUT_AC);
 #define turn_right OnFwd(OUT_C);Off(OUT_A);
 #define turn_left OnFwd(OUT_A);Off(OUT_C);
 #define kyu_turn_r OnFwd(OUT_C);OnRev(OUT_A);
 #define kyu_turn_l OnFwd(OUT_A);OnRev(OUT_C);
 #define right_cross  turn_right;Wait(110);
 #define straight_cross  kyu_turn_r;Wait(10);go_go;Wait(30);
 #define BLACK_a 44
 #define BLACK_b 48
 #define WHITE_a 52
 #define WHITE_b 58
 #define MOVE_TIME 18
 #define ball_get  go_go;Wait(20);Off(OUT_AC);OnFwd(OUT_B);Wait(20);Off(OUT_B);
 #define shoot OnRev(OUT_AC);     Wait(110);Off(OUT_AC);kyu_turn_l;Wait(80);Off(OUT_AC);Wait(40);kyu_turn_r;Wait(30);OnRev(OUT_B);Wait(20);Off(OUT_ABC);
 sub line_trace()
 {     ClearTimer(0);
       SetSensor(SENSOR_2,SENSOR_LIGHT);
       while(FastTimer(0)<=MOVE_TIME){ 
                     if(SENSOR_2<BLACK_a){
                          kyu_turn_l; 
                         }
                     else if(SENSOR_2<BLACK_b){
                       turn_left;
                       ClearTimer(0);
                        }
                   
*目次 [#r714926f]
#contents
*課題 [#sec56fbe]
*機体の説明 [#r602f42d]
**機体全体 [#l6cbf83b]
#ref(2016b/Member/gazet/Mission2/robothi.jpg,11.9kb,)
今回の課題に挑む機体。もろい部分はあるが、しっかり点検してから走らせれば問題なし。
**車部分 [#r9e50c11]
機体
車体はできるだけ小さく作った。小回りが利くようにするためだ。三輪のうち1つはキャスターにしてある。摩擦の少ないパーツを引きずるよりもバックがスムーズになった。
#ref(2016b/Member/gazet/Mission2/ue.jpg,7.34kb,)
#ref(2016b/Member/gazet/Mission2/ura.jpg,12.9kb,)
**アーム部分 [#if9a124f]
黄色い部品で挟みむ。光センサーもアーム部分につけた。モーターもつけたため、重く、しっかり取り付けないと走行中にとれてしまうのが欠点。
#ref(2016b/Member/gazet/Mission2/kuwagata.jpg,7.91kb,)
*プログラムの説明 [#x51f6632]
  #define go_go OnFwd(OUT_AC);               //前に進む
  #define turn_right OnFwd(OUT_C);Off(OUT_A);        //右に曲がる
  #define turn_left OnFwd(OUT_A);Off(OUT_C);        //左に曲がる
  #define kyu_turn_r OnFwd(OUT_C);OnRev(OUT_A);      //右旋回
  #define kyu_turn_l OnFwd(OUT_A);OnRev(OUT_C);      //左旋回
  #define right_cross  turn_right;Wait(110);//交差点右折
  #define straight_cross  kyu_turn_r;Wait(10);go_go;Wait(30);   //交差点直進
  #define BLACK_a 44        //これらは色を判断するために使う光センサーの値
  #define BLACK_b 48
  #define WHITE_a 52
  #define WHITE_b 58
  #define MOVE_TIME 18
  #define ball_get  go_go;Wait(20);Off(OUT_AC);OnFwd(OUT_B);Wait(20);Off(OUT_B);   //ボールをとる
  #define shoot OnRev(OUT_AC); Wait(110);Off(OUT_AC);kyu_turn_l;Wait(80);Off(OUT_AC);Wait(40);kyu_turn_r;Wait(30);OnRev(OUT_B);Wait(20);Off(OUT_ABC);    //ボールをゴールへ入れる 回りながら投げる動きに挑戦した。
ライントレースするサブルーチン
 黒い線の左側をトレースする
光センサーの値によって5段階の動きをプログラミングした。

  sub line_trace()
  {     ClearTimer(0);
        SetSensor(SENSOR_2,SENSOR_LIGHT);
        while(FastTimer(0)<=MOVE_TIME){ 
                      if(SENSOR_2<BLACK_a){
                           kyu_turn_l; 
                          }
                      else if(SENSOR_2<BLACK_b){
                        turn_left;
                        ClearTimer(0);
                         }                  
                     else if(SENSOR_2<WHITE_a){
                       go_go;
                       ClearTimer(0);
                        }
                     else if(SENSOR_2<WHITE_b){
                          turn_right;
                          ClearTimer(0);
                        }
                      else {
                        kyu_turn_r;
                        ClearTimer(0);
                        }
       }
     Off(OUT_AC);
     Wait(100);
 } 
                        ClearTimer(0);
                         }
                      else if(SENSOR_2<WHITE_b){
                           turn_right;
                           ClearTimer(0);
                         }
                       else {
                         kyu_turn_r;
                         ClearTimer(0);
                         }
        }
      Off(OUT_AC);
      Wait(100);
  } 




task main()
{
ミッションを遂行するプログラム
 task main()
 {
      line_trace();
      right_cross;
      line_trace();
      straight_cross;
      ball_get;
      line_trace();
      straight_cross;
      line_trace();
      right_cross;
      line_trace();
      straight_cross;
      line_trace();
      right_cross;
      line_trace();
      shoot;
}
 }


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