目次
#contents
*課題について [#odf54201]
 今回課題は、空き缶を収集し、ゴールに空き缶をなるべく高く積み上げる。
&br; 詳しい課題3については[[こちら>2017a/Mission3]]
*ロボット本体について [#h2ccc9a9]
*プログラムについて [#c15d8327]
**defineについて [#p8722fcd]
 基本的な右左旋回、右左折、直進を定義した。
  #define senkai_left OnRev(OUT_C);OnFwd(OUT_A);//左旋回
  #define senkai_right OnFwd(OUT_C);OnRev(OUT_A); //右旋回
  #define turn_left Off(OUT_C);OnFwd(OUT_A);//左折
  #define turn_right OnFwd(OUT_C);Off(OUT_A);//右折
  #define fwd OnFwd(OUT_AC);//直進
**void、サブルーチンについて [#g2d41d36]
 直進するプログラム
 void go_fwd(int time)
 {
   fwd;
   Wait(time);
   Off(OUT_AC);
 }
交差点を右折するプログラム。旋回をすることで小さく曲がれるようにした。
 sub usetu()
 {
   turn_right;
   Wait(230);
   Off(OUT_C);
   senkai_right;
   Wait(50);
   Off(OUT_AC);
   OnRev(OUT_AC); 
   Wait(30);
   Off(OUT_AC);
 }
 
 sub sasetu()
 {
   turn_left;
   Wait(190);
   Off(OUT_A);
   senkai_left;
   Wait(40);
   Off(OUT_AC);
 }
PQRSの交差点では、90度に曲がるのではないため、時間を調整し斜めに車体を向けるようにした。
 sub naname_usetu()
 {
  OnFwd(OUT_C);
  Off(OUT_A);
  Wait(200);
  Off(OUT_C);
  OnRev(OUT_AC);
  Wait(40); 
  Off(OUT_AC);
 }
缶を置いて離れるためのプログラム
 sub owari()
 {
 turn_right;
 Wait(70);
 Off(OUT_AC);
 Wait(450);
 OnRev(OUT_AC);
 Wait(200);
 Off(OUT_AC);
 }
 
 sub line_trace()
 {
  SetSensor(SENSOR_1, SENSOR_LIGHT);   //右
  SetSensor(SENSOR_3, SENSOR_LIGHT);   //左
  ClearTimer(0);
 
  PlaySound(SOUND_CLICK); 
 
  while(FastTimer(0)<11){
       if(SENSOR_1>=49&&SENSOR_3>=55){
           fwd;
           ClearTimer(0);
       }else if(SENSOR_3>=50){
           turn_right;
           ClearTimer(0);
       }else if(SENSOR_1>=40){
           turn_left;
           ClearTimer(0);
       }else if(SENSOR_3>=48){
           senkai_right;
           ClearTimer(0);
       }else if(SENSOR_1>=38){
           senkai_left;
           ClearTimer(0); 
       }else if(SENSOR_1>=30){
            Off(OUT_AC);
            PlaySound(SOUND_LOW_BEEP);
       }else if(SENSOR_3>=30){
            Off(OUT_AC);
            PlaySound(SOUND_LOW_BEEP);
        }else{
            fwd;
            Wait(30);
            Off(OUT_AC); 
        }	
 }
  Off(OUT_AC);
  PlaySound(SOUND_CLICK);
 }
   
 void line_trace_2(int time)
 {
  SetSensor(SENSOR_1, SENSOR_LIGHT);   //右
  SetSensor(SENSOR_3, SENSOR_LIGHT);   //左
  ClearTimer(0);
  ClearTimer(1);
 
  PlaySound(SOUND_CLICK); 
 
  while(FastTimer(0)<11&&FastTimer(1)<time){
       if(SENSOR_1>=49&&SENSOR_3>=55){
           fwd;
           ClearTimer(0);
       }else if(SENSOR_3>=50){
           turn_right;
           ClearTimer(0);
       }else if(SENSOR_1>=40){
           turn_left;
           ClearTimer(0);
       }else if(SENSOR_3>=48){
           senkai_right;
           ClearTimer(0);
       }else if(SENSOR_1>=38){
           senkai_left;
           ClearTimer(0); 
        }else if(SENSOR_1>=30){
            Off(OUT_AC);
            PlaySound(SOUND_LOW_BEEP);
       }else if(SENSOR_3>=30){
            Off(OUT_AC);
            PlaySound(SOUND_LOW_BEEP);
        }else{
            fwd;
            Wait(30);
            Off(OUT_AC); 
        }	
 }
  Off(OUT_AC);
 }
**タイヤ側のプログラム [#mdc70070]
 task main()
 {
  go_fwd(50);
  line_trace();
  usetu();
  repeat(2){
      line_trace();
      Wait(50);
      naname_usetu();
      Wait(50);
       }
 line_trace_2(230);
 Wait(500);
 senkai_left;
 Wait(200);
 Off(OUT_AC);
 go_fwd(30);
 line_trace();
 Wait(450);
 sasetu();
 line_trace();
 owari();
 }
**アーム側のプログラム [#rc2508b5]
 アームのプログラムについてはこちら[[miso>2017a/Member/miso/Mission3]]を見てください。
*結果 [#c1625a78]
 空き缶を3段積み重ねることができたため、3+6+9=18点となった。
&br;  実際に積み上げている様子はこちらhttps://www.youtube.com/watch?v=I_fwqzWXyB0
*まとめ [#gf4a75fc]
 [[miso
&br; ejj
&br; sawa

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