*目次 [#hc429614]
#contents
*課題 [#j2ac578a]
光センサーを使って、ライン上を走るロボットの作成
*ロボットの仕組み [#p55c4934]
**本体 [#y816fc96]
モーター3つとセンサー1つをつけられるように、

本体を所定の位置から少しずらした位置につけるようにした

#ref(image (1).jpeg)

**アーム [#ide5bbd0]
今回はボールを運ぶため、このようなアームにした

#ref(image.jpeg)

ボールを掴んだり持ち上げすると難しくなると判断し、

アームを下ろし、アームでボールを囲むだけで運べるようにした
*走る [#e707bfa0]
**コース [#w1daa75a]

#ref(・鬣、・鷽゙.png)
今回はB→Aと走る

**プログラム [#u7ae0d45]
 #define hsa OnFwd(OUT_B,30);OnFwd(OUT_C,-10);
 #define lsa OnFwd(OUT_B,30);OnFwd(OUT_C,0);
 #define hu OnFwd(OUT_B,-10);OnFwd(OUT_C,30);
 #define lu OnFwd(OUT_B,0);OnFwd(OUT_C,30);
 #define go OnFwd(OUT_BC,30);
 #define kaku OnFwd(OUT_B,30);OnFwd(OUT_C,0);
 #define kaku OnFwd(OUT_B,30);OnFwd(OUT_C,20);
 task main()
 {
      SetSensorLight(S3);
      int n=0;
      long t1=CurrentTick();
      long t0=CurrentTick();
 
      while(CurrentTick()-t1<3000){
      while(CurrentTick()-t1<3500){
 
           if(SENSOR_3<28){
               hsa;
           } else if(SENSOR_3<35){
               lsa;
           } else if(SENSOR_3<50){
               t0=CurrentTick();
               go;
           } else if(SENSOR_3<57){
               t0=CurrentTick();
               hu;
           } else {
               t0=CurrentTick();
               lu;
              }
           }
 
           if(CurrentTick()-t0>120){
 
         }
                      Off(OUT_BC);
                      Wait(2000);
                      go;
                      kaku;
                      Wait(1800);
                      Off(OUT_BC);
                      Wait(1000);
           }
      }
 
      while(CurrentTick()-t1<15000){
 
            if(SENSOR_3<28){
               hsa;
               hu;
           } else if(SENSOR_3<35){
               lsa;
               lu;
           } else if(SENSOR_3<50){
               go;
           } else if(SENSOR_3<57){
               hu;
               hsa;
           } else {
               lu;
              }
               lsa;
           }
 
 
          }
      }
 
                       Off(OUT_BC);
                       OnFwd(OUT_A,10);
                       Wait(1500);
                       Off(OUT_A);
 
       
      while(CurrentTick()-t1<32000){
 
            if(SENSOR_3<28){
               hsa;
           } else if(SENSOR_3<35){
               lsa;
           } else if(SENSOR_3<50){
               go;
           } else if(SENSOR_3<57){
               hu;
           } else {
               lu;
              }
           }
 
 
          }
       }
 
                       Off(OUT_BC);
                       OnFwd(OUT_BC,-40);
                       Wait(100);
                       OnFwd(OUT_A,-10);
                       Wait(1500);
                       Off(OUT_BC);
                       OnFwd(OUT_BC,70);
                       Wait(60);
 
 
 }
*反省・感想 [#uf858c3e]
今回はアームなど、ロボット製作の方は工夫ができ、それが上手くいったためよかった。

しかし、プログラミングの方は交差点など難しいところもあり、まだまだだと思った。

次回は関数などを使って、よりスムーズなプログラムになるようにしたい。

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