- 追加された行はこの色です。
- 削除された行はこの色です。
[[2017a/Member]]
[[2017a/Member]]~
目次
#contents
・課題1
*課題1 [#g1e40900]
松本での新しい生活を表す7画以上の漢字1文字を15cm四方の紙に書く。詳しくは[[2017a/Mission1]]を参照。
**選んだ漢字 [#t33a2dc9]
豊かな自然と北アルプスにかかる青空が印象的であったため「空」という漢字を選んだ。
*ロボットの説明 [#v307b7eb]
**全体図 [#pe51c239]
#ref(2017a/Member/mattu/Mission1/robo_mission1_1.jpg,100%,ロボットの全体図)
X軸Y軸とペンを持たせたアームの上げ下げを利用して文字を書く仕組みとした。それぞれの動きにモーターを1つずつ使っている。
***前後移動 [#r5b96931]
前後移動はサンプルのロボットの構造を流用し、タイヤで移動する仕組みとなっている。
***左右移動 [#u7a67a6d]
***アーム上下 [#mf96d24a]
*プログラムについて [#l23a7ada]
**文字の書き順 [#c6be9949]
「空」という漢字の書き順通りに書いている。
**プログラム概要 [#yc67d727]
このロボットは前移動、後ろ移動、左移動、右移動、アーム下げ、アーム上げの6つの動きのみで文字を書くため、プログラムができる限り読みやすくなるように、定義とサブルーチンを6つ用意した。
***定義とサブルーチン [#k346f72a]
ペンの上げ下げは常に同じ動きを行えれば良いのでサブルーチンを利用したが、前後と左右移動は画の長さが一画ごとに異なるので、対応できるようにtを変数とした定義を利用した。
#define go_fwd(t) OnRev(OUT_C); \
Wait(t);Off(OUT_C); //前移動
#define go_back(t) OnFwd(OUT_C); \
Wait(t);Off(OUT_C); //後ろ移動
#define move_left(t) OnFwd(OUT_A); \
Wait(t);Off(OUT_A); //左移動
#define move_right(t) OnRev(OUT_A); \
Wait(t);Off(OUT_A); //右移動
sub armdown()
{
OnFwd(OUT_B);
Wait(110);
Off(OUT_B);
} //アーム下げ
sub armup()
{
OnRev(OUT_B);
Wait(130);
Off(OUT_B);
} //アーム上げ
***メイン [#r5d93972]
task main ()
{
armdown();
go_back(60);
armup();
move_left(750);
armdown();
go_back(60);
armup();
go_fwd(60);
armdown();
move_right(1400);
go_back(70);
armup();
OnFwd(OUT_B);
Wait(25);
Off(OUT_B);
go_fwd(30);
move_left(1000);
armdown();
OnFwd(OUT_AC);
Wait(70);
Off(OUT_AC);
armup();
go_fwd(70);
move_right(680);
armdown();
go_back(70);
move_right(370);
armup();
go_back(80);
move_left(1050);
armdown();
move_right(800);
armup();
move_left(410);
armdown();
go_back(135);
armup();
move_left(600);
armdown();
move_right(1100);
armup(); //終了
}
*まとめ [#db133fd6]