- 追加された行はこの色です。
- 削除された行はこの色です。
#contents
*ロボット全体 [#q753873e]
二つのモーターで本体を進むようにして、もう一つのモーターでペンが上下出来るようにロボットを作った
#ref(2016a/Member/rise/Mission1/IMG_1914.JPG,40%,)
#ref(2016a/Member/rise/Mission1/IMG_1914.JPG,40%,)
#ref(2016a/Member/rise/Mission1/IMG_1917.JPG,40%,)
*胴体部分 [#ue3e79ec]
胴体部分は説明書に載っている基本的なものにした
#ref(2016a/Member/rise/Mission1/IMG_1922.JPG,40%,)
*筆を持つ部分 [#z5510de7]
三つ目のモーターで二つのタイヤを回すことで筆を上下に動かす
#ref(2016a/Member/rise/Mission1/IMG_1924.JPG,40%,)
*プログラム [#nc60e33f]
#define TURN_TIME 60
#define turn_left Off(OUT_A); OnFwd(OUT_C);\
Wait(TURN_TIME);Off(OUT_C);
#define go_forward(t) OnFwd(OUT_AC); \
Wait(t);Off(OUT_AC);
#define turn_right Off(OUT_C); OnFwd(OUT_A);\
Wait(TURN_TIME);Off(OUT_A);
#define turn_head Off(OUT_A);OnFwd(OUT_C);Wait(60);Off(OUT_AC);OnFwd(OUT_AC);\
Wait(10);Off(OUT_AC);
#define turn_all OnFwd(OUT_C);OnRev(OUT_A);Wait(60);Off(OUT_AC)
task main ()
プログラミングは主に下に示す定義文により構成をすることで、作業の簡素化を図った。
プログラムは主に下に示す定義文により構成をすることで、作業の簡素化を図った。
#define TURN_TIME 60;//回る時間
#define turn_left Off(OUT_A); OnFwd(OUT_C);
Wait(TURN_TIME);Off(OUT_C); //左に曲がる
#define go_forward(t) OnFwd(OUT_AC);
Wait(t);Off(OUT_AC); //前進
#define turn_right Off(OUT_C); OnFwd(OUT_A);
Wait(TURN_TIME);Off(OUT_A); //右に曲がる
#define turn_head Off(OUT_A);OnFwd(OUT_C);Wait(60);Off(OUT_AC);OnFwd(OUT_AC);
Wait(10);Off(OUT_AC); //こまかく曲がる
#define turn_all OnFwd(OUT_C);OnRev(OUT_A);Wait(60);Off(OUT_AC);//その場で回転
以下がロボットにさせようとしたプログラムである
task main ()
{
OnFwd(OUT_B);
go_forward(40);
turn_all;
go_forward(20);
turn_all;
go_forward(20);
turn_left;
go_forward(40); // 1秒間前進
go_forward(40); //あごの部分を書く
turn_head;
turn_head;
turn_head;
turn_head;
turn_head;
turn_head;
turn_head;
turn_head;
turn_head; //頭の部分を書く
OnRev(OUT_B);
Wait(10);
Off(OUT_B);
Off(OUT_B); //筆を上げる
turn_left;
go_forward(30);
OnFwd(OUT_B);
Wait(10);
Wait(10);
Off(OUT_B);
OnRev(OUT_B);
OnRev(OUT_B);
Wait(10);
Off(OUT_B);
Off(OUT_B); //左目の部分
go_forward(30);
OnFwd(OUT_B);
Wait(10);
Off(OUT_B);
OnRev(OUT_B);
OnRev(OUT_B);
Wait(10);
Off(OUT_B);
Off(OUT_B); //右目の部分
turn_left;
OnFwd(OUT_B);
Wait(10);
Off(OUT_B);
go_forward(20);
OnRev(OUT_B);
Wait(10);
Off(OUT_B);
turn_right;
OnFwd(OUT_B);
Wait(10);
Off(OUT_B);
OnRev(OUT_AC);
Wait(30);
Off(OUT_AC);
Off(OUT_AC); //口の部分
}
*問題点 [#p15cb3f2]
実際にプログラミングを書いてロボットを動かしてみるとペンが紙にうまくあたらなかった
#ref(2016a/Member/rise/Mission1/IMG_1921.JPG,40%,)
その理由はタイヤの大きさが上下で異なりペンを持つ側がもう一方よりも上がっていたからである
*改善した結果 [#abc69d80]
もう一度ロボットを組み替えてペンを持つ側をもう一方よりも下げた
しかし実際の発表会ではペンを動かすBのモーターが故障してしまい動かなかったため全く似顔絵を描くことが出来なかった。
*感想 [#qa5dc8f3]
今回の課題に当たり、改めてプログラミングの正確さが必要だと感じた。 そして、ソフトとハードの関係であるプログラムとロボットとをうまく関連させて動かすことの難しさを知ることが出来た。