#contents

*ロボットの構造 [#xfb5f4b0]
まず初めにこれが私たちが作ったロボットの説明をしよう。

今回はロボットが自ら移動し字を書くロボットを作成した。

この形のロボットにした理由は制作が簡単でありほかの部分に時間をかけられると考えたためである。

**タイヤ [#mabd5c1b]

タイヤの部分はこうなっている。

&ref(./ロボ2.jpg,30%);

3輪にすることで小回りがきくようになっている。

**アーム [#k2471c56]
アームはこのようになっている。

&ref(./ロボ1.jpg,30%);

今回は筆ペンを使用したいと考えたため押し付けるタイプではなく筆を紙に置くといったようになるアームにした。
このようにアームの真下に筆がこないようにし押し付けてしまうことを防いだ。

***アームの動き [#x1f72372]
アームはこのように動き筆の上げ下げを行う。

&ref(./ロボ3.jpg,30%); ➡ &ref(./ロボ4.jpg,30%);

*字を書く [#ef487c2c]

今回は私の名前に入っている「吾」という字を書こうと思う。

**書き順 [#yc39f03b]

&ref(./書き順.jpg,30%); 

ロボットの移動をできるだけ少なくするために

このようにすべての横棒を書いてから縦棒をすべて書いた

**プログラム [#ud457ff8]

***定義 [#ld4f144d]
  #define go(t) OnFwd(OUT_B,32);OnFwd(OUT_C,30);Wait(t); Off(OUT_BC);Wait(1000);          // 前進
  #define back(t) OnFwd(OUT_B,32);OnFwd(OUT_C,30);Wait(t); Off(OUT_BU);Wait(1000);        // 後進
  #define turnl OnFwd(OUT_B,45);OnFwd(OUT_C,-45);Wait(570);Off(OUT_BC);Wait(1000);        // 90°左回り
  #define turnl OnFwd(OUT_B,-45);OnFwd(OUT_C,45);Wait(570);Off(OUT_BC);Wait(1000);        // 90°右回り
  #define up OnFwd(OUT_A,30);Wait(200);Off(OUT_A);Wait(1000);                 // 筆上げ
  #define down OnFwd(OUT_A,-10);Wait(300);Off(OUT_A);Wait(1000);              // 筆下げ



***横棒を書く [#yecca223]
     task main ()
     {
           down;                        // 1本目
           back(700);
           up;
  
                turnl;                  // 移動
                go(250);
                tuenr;
                go(600);
  
           down;                        // 2本目
           back(600);
           up;
  
                back(200)               // 移動
                turnl;
                go(250);
                tuenr;
                go(1000);
   
           down;                         // 3本目
           back(1000);
           up;  
  
                turnl;                   // 移動
                go(250);
                tuenr;
                go(800);
  
           down;                         // 4本目
           back(600);
           up;
  
                turnl;                   // 移動
                go(250);
                tuenr;
                go(600);
  
           down;                         // 5本目
           back(600);
           up;

***縦棒を書く [#u3c56542]
                go(400);                 // 移動
                OnFwd(OUT_B,45);
                Wait(1100);
                Off(OUT_B);
                Wait(1000);
                back(1400);
  
           down;                          // 1本目
           back(300);
           up;
     
                back(250);                // 移動
  
           down;                          // 2本目
           back(250);
           up;
  
                turnl;                    // 移動
                back(500);
                tuenr;
                back(1500);
        
           down;                           // 3本目
           back(500);
           up;
  
                back(250);                // 移動
  
           down;                           // 4本目
           back(250);
            up;
  }


**完成 [#wde1e80e]

&ref(./完成.jpg,30%);

少し不格好になっていしまったが書くことができました。

*反省・感想 [#o7ed9c37]

**反省 [#z47bbcb2]
今回難しかったところ苦労したところは、まず電池の残量によってロボットの進む距離が変わってしまうことだった。細かい調整が大変だった。

またロボットの重心が右に偏っていたために左右のモーターの回転数が変わってしまった。これは左右のモーターの出力を調節した。

また「口」などの書き始めなどをそろえることも大変であった。

**感想 [#z2e6af0c]
今回は初めてのプログラミングであった苦労した部分も多くあったが楽しくできた。次回はロボットの製作にもっと時間を割きさらに高度な仕組みのロボットを製作したい。

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