目次
#contents

*課題1 [#l8ed7f1d]
*課題1の説明 [#l8ed7f1d]
**内容 [#te933478]
これまで住んだことのある都道府県名、市町村名、地区名などの中から2文字以上のものを選び、それをA4の紙を書くロボットを製作する.
**方針 [#m9c1cbdc]
・描く文字は難易度の点から考え,村山とした. [#b766e615]

・動力についてはペンをマジックアームのような装置とタイヤによる走行を用いることにより,縦横の動きを可能にさせたものを考案.改造を重ね,ギアを複数搭載することとなった.なお扱うロボットの種類はNXTである. [#fb73aea8]

・プログラミングは速度と秒数を指定するものではなく,調整が容易で電池消費量に囚われないよう角度を指定するものを用いた. [#l54db4e4]
*ロボットの説明 [#ve0b55cc]
** [#v165970e]
*プログラムの説明 [#n675b828]
**定義の挿入 [#f06e7488]
 ペンの上げ下げのみを定義.初めはFloatの記述は無かったが,動作を繰り返す度ペンが浮き上がってくる問題が発生したため追加した.モーターAがマジックアーム.BがAと繋がるギアを動かすもの.Cがタイヤを回転させるためのモーターである.またモーターBの回転角が大きいのはギアの関係からである.実際のプログラミングは以下の通り.

    #define pen_up RotateMotor(OUT_B, 20, -80);Off(OUT_B);//モーターBを20%の力で-80度回転
    #define pen_down RotateMotor(OUT_B,20,80);Float(OUT_B);Wait(1000);Off(OUT_B);//モーターBを20%の力で80度回転

**実際の稼働プログラム [#zb6eebdc]
    task main(){
                    //木へん
    ResetTachoCount(OUT_ABC);
    pen_up;
    RotateMotor(OUT_A, 30, 30);//アームを手前に引く
  pen_down;
    RotateMotor(OUT_C, 30, 90);//ここまで一画目
    
    pen_up;
    RotateMotor(OUT_C, 30, -45);//二画目のために一角目の中心に戻る
    RotateMotor(OUT_A, 30, -20);//二画目のために一角目の真上へペンを移動
    pen_down;
    RotateMotor(OUT_A, 30,80);//二画目
    
    pen_up;
    RotateMotor(OUT_A, 30, -50);//ペンの位置調整
    pen_down;
    OnFwd(OUT_A,20);
    OnFwd(OUT_C,-20);//三画目の斜め線
    Wait(700);
    Off(OUT_AC);//ここまで三画目
    
    pen_up;
    OnFwd(OUT_A,-20);
    OnFwd(OUT_C,20);//元の位置に戻る
    Wait(700);
    Off(OUT_AC);
    pen_down;
    OnFwd(OUT_A,20);
    OnFwd(OUT_C,20);//四画目
    Wait(500);//ここまで寸を書くための移動
                    
            // 寸
    pen_up;
    RotateMotor(OUT_C,40,30);//位置の移動
    RotateMotor(OUT_A,20,-70);//ペンの位置調整
    pen_down;
    RotateMotor(OUT_C, 30, 80);//ここまで寸一角目
    
    pen_up;
    RotateMotor(OUT_C, 40, -30);//位置の移動
    RotateMotor(OUT_A, 30, -20);//一角目の真上にペンを移動
    pen_down;
    RotateMotor(OUT_A,20, 60);//二角目
    
    pen_up;
    RotateMotor(OUT_C,40,-30);//点を打つ位置に移動
    RotateMotor(OUT_A,20,-30);//点を打つ位置にペンを移動
    pen_down;
    Wait(1000);//ここまで三角目


    Off(OUT_ABC);
                  // 山
    pen_up;
    RotateMotor(OUT_C,30,70);
    RotateMotor(OUT_A,30,10);//ここまで位置の移動
    pen_down;
    RotateMotor(OUT_A,30,30);
    RotateMotor(OUT_C,30,90);
    RotateMotor(OUT_A,30,-30);//同時に三画目までを書く

    pen_up;
    RotateMotor(OUT_C,30,-45);
    RotateMotor(OUT_A,30,-30);//位置の移動
    pen_down;
    RotateMotor(OUT_A,30,60);//四画目
    pen_up;
    RotateMotor(OUT_C,30,180);
    Off(OUT_ABC);
    }
*考察 [#kbb765f8]


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