目次

課題1

これまで住んだことのある都道府県名、市町村名、地区名などの中から2文字以上、かつ合計10画以上のものを選び、それをA4の紙を書くロボットを製作せよ。

選んだ文字

岐阜県にある「高山」という地名を選んだ.

ロボットの説明

ロボットの全体

私たちが作成したロボットは,X軸,Y軸に分けて制御している.

web.png

また,

〆鄒したロボットのレール部分を走る機構(Y軸方向の動き)

▲譟璽襦NXT本体を動かす機構(X軸方向の動き)

ペンを上げ下げする機構(Z軸方向の動き)

の3つの機構に分かれている.

webyou.jpg

ロボットの機構

〆鄒したロボットのレール部分を走る機構(Y軸方向の動き)

,竜々修Y軸方向の動き,つまり漢字の縦線を担当している.本体についているレールの上を移動し,Cのモーターに出力を入れることで動く.

re_ru.jpg yjikuhoukou.jpg

▲譟璽襦NXT本体を動かす機構 (X軸方向の動き)

△竜々修X軸方向の動き,つまり漢字の横線を担当している.Aのモーターに出力を入れることで動く.

xjikuhoukou.jpg

ペンを上げ下げする機構(Z軸方向の動き)

の機構はZ軸方向の動き,つまりペンの上げ下げを担当している.モーターが回転することでペンを固定している部分が連動して動く仕組みだ.モーターにの回転をそのままペンの上げ下げに使う(図1)と線の端がしっかりと止まらないので,できるだけ床と垂直に上げ下げできるように(図2)作った.

penzu.png

zjikuhoukou.jpg

書き順

いかに継ぎ目を少なくし簡単に書けるかを考えてルートを決めた結果,次のような書き順になった.

kakijunn.png

プログラムを書く

まず,私たちのプログラミングは始めに#defineを使い、モーターの動作などをマクロを使い、定義した.

#define arm_up OnFwd(OUT_B,20);Wait(700);Off(OUT_B); //ペンを上げる
#define arm_down OnRev(OUT_B,20);Wait(700);Off(OUT_B); //ペンを下げる
#define stopA Off(OUT_A); //モーターAの停止
#define stopC Off(OUT_C); //モーターCの停止
#define straightA OnRev(OUT_A,20); //X軸−方向への移動
#define backA OnFwd(OUT_A,20); //X軸+方向への移動
#define straightC OnFwd(OUT_C,20); //Y軸+方向への移動
#define backC OnRev(OUT_C,20); //Y軸−方向への移動

1画目

task main()
{
    arm_down;
    straightA;
    Wait(1500);
    stopA;
    arm_up;

1画目から2画目への移動

    backA;
    Wait(750);
    stopA;

2画目

    arm_down;
    backC;
    Wait(385);
    stopC;
    arm_up;

2画目から3画目への移動

    backA;
    Wait(385);
    stopA;
    straightC;
    Wait(565);
    stopC;

3画目

    arm_down;
    straightA;
    Wait(750);
    stopA;
    straightC;
    Wait(565);
    stopC;
    backA;
    Wait(750);
    stopA;
    backC;
    Wait(600);
    stopC;
    arm_up;

3画目から4画目への移動

    backA;
    Wait(400);
    stopA;
    straightC;
    Wait(2000);
    stopC;
    straightA;
    Wait(281);
    stopA;

4画目

    arm_down;
    backA;
    Wait(310);
    stopA;
    backC;
    Wait(1125);
    stopC;
    straightA;
    Wait(1500);
    stopA;
    straightC;
    Wait(1125);
    stopC;
    arm_up;

4画目から5画目への移動

    backA;
    Wait(1111);
    stopA;
    backC;
    Wait(281);
    stopC;

5画目

    arm_down;
    backC;
    Wait(562);
    stopC;
    straightA;
    Wait(750);
    stopA;
    straightC;
    Wait(562);
    stopC;
    backA;
    Wait(750);
    stopA;
    arm_up;

5画目から6画目への移動

    backC;
    Wait(750);
    stopC;
    backA;
    Wait(1125);
    stopA;

6画目

    arm_down;
    straightC;
    Wait(1125);
    stopC;
    backA;
    Wait(1500);
    stopA;
    backC;
    Wait(1125);
    stopC;
    arm_up;

6画目から7画目への移動

    backC;
    Wait(1125);
    stopC;
    straightA;
    Wait(725);
    stopA;

7画目

    arm_down;
    straightC;
    Wait(2250);
    stopC;
    arm_up;
    backA;
    Wait(2250);
    stopA;
}

完成した文字

kannsei.jpg

まとめ

課題を達成できた.完成度が高く,自分としてはかなり満足のいくものを書けた気がするが,いくつか問題点があった.

  • 毎回書くたびに少し漢字の形やバランスが変わってしまう.
  • 「口」の始点と終点がわずかに離れてしまう.

解決策として,

  • Y軸を担うモーターのレールの強度を高める.
  • 部品のわずかな隙間などが原因だと考えられるため,ロボットを改善することは難しい.これに関しては,試し書きをしながら少しずつWaitの秒数を調節する必要がある.

添付ファイル: filere_ru.jpg 8件 [詳細] filekannsei.jpg 10件 [詳細] fileteigi_houkou.jpg 3件 [詳細] filepenzu.png 4件 [詳細] filekakijunn.png 6件 [詳細] filewebyou.jpg 10件 [詳細] filezjikuhoukou.jpg 6件 [詳細] fileyjikuhoukou.jpg 6件 [詳細] filexjikuhoukou.jpg 7件 [詳細] fileweb.png 8件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-07-25 (木) 19:33:14 (29d)