- 追加された行はこの色です。
- 削除された行はこの色です。
[[2019a/Member/mikoto/Mission1]]
目次
#contents
*課題1 [#q9faf2e6]
これまで住んだことのある都道府県名、市町村名、地区名などの中から2文字以上、かつ合計10画以上のものを選び、それをA4の紙を書くロボットを製作せよ。
**選んだ文字 [#y55e8fc2]
地元であり、また書きやすい「上田」にしようと考えたが、画数が少なかったため、&size(25){上田市}; にした。
*ロボットの説明 [#j74de017]
#ref(2019a/Member/mikoto/Mission1/robotics1.jpg,100%,アーム)
・過去の受講生のページを参考にしてペン先がy軸を移動できるアームを作った。
・過去の受講生のページを参考にしてペン先がy軸を移動できるアームを作った。アームは曲げ伸ばしできる。モーターが動くと、アームがマジックハンドのように伸び縮みし、ペン先が移動する仕組みとなっている。
(参考にしたページ→ [[2018b/Member/ndksiba/Mission1]]
#ref(2019a/Member/mikoto/Mission1/robotics2.jpg,100%,アームの先)
・最初は動きやすさを重視し、アームの先はもう少し自由な構造だったが、自由すぎて動いた後で元の位置に戻ってこないことがあったので、自由度を減らして写真のような構造に落ち着いた。
*プログラムの説明 [#l0802dd6]
**書き順 [#febd3f23]
#ref(2019a/Member/mikoto/Mission1/kakizyun.png,70%,書き順)
・「上」の字以外は正しい書き順になるようにした。
**プログラムを書く際の工夫 [#c5efc5d0]
・プログラムが長くなることが予想されたので、定義や変数を駆使して短く書きやすくなるようにした。
・定義名を日本語にしたので、美しいとは言い難いが視覚的に分かりやすい。
**プログラムの定義 [#r6b3ca0e]
#define pen_sage OnRev(OUT_B,15);Wait(300);Off(OUT_B); //ペンを下げる
#define pen_age OnFwd(OUT_B,15);Wait(300);Off(OUT_B); //ペンを上げる
#define tate(s) OnFwd(OUT_A,25);Wait(s);Off(OUT_A); //縦画を書く
#define yoko(s) OnFwd(OUT_C,30);Wait(s);Off(OUT_C); //横画を書く
#define return_t(s) OnRev(OUT_A,25);Wait(s);Off(OUT_A); //縦方向に戻る
#define return_y(s) OnRev(OUT_C,30);Wait(s);Off(OUT_C); //横方向に戻る
**「上」を書くプログラム [#i2bb17cc]
task main ()
{
pen_sage;
yoko(300); //1画目
pen_age;
tate(1000);
return_y(950);
pen_sage;
yoko(980); //2画目
pen_age;
return_y(480);
return_t(2000);
pen_sage;
tate(2000); //3画目
pen_age;
**「田」を書くプログラム [#sc1d71a2]
tate(300);
return_y(270);
pen_sage;
tate(1200); //1画目
pen_age;
return_t(1200);
pen_sage;
yoko(700);
tate(1200); //2画目
pen_age;
return_y(450);
return_t(1200);
pen_sage;
tate(1200); //3画目
pen_age;
return_t(600);
return_y(270);
pen_sage;
yoko(700); //4画目
pen_age;
return_y(700);
tate(600);
pen_sage;
yoko(700); //5画目
pen_age;
**「市」を書くプログラム [#lf6bd874]
return_y(450);
tate(300);
pen_sage;
tate(300); //1画目
pen_age;
return_y(450);
pen_sage;
yoko(980); //2画目
pen_age;
return_y(700);
tate(300);
pen_sage;
tate(450); //3画目
pen_age;
return_t(450);
pen_sage;
yoko(600);
tate(450); //4画目
return_y(100);
pen_age;
return_y(300);
return_t(750);
pen_sage;
tate(900); //5画目
pen_age;
}
*反省・改善点 [#q768956c]
・時間が無く、妥協が目立った。また、せっかくロボットをxy型にしたが、座標計算が雑で狙い通りの線が引けなかった。次はさらにクオリティの高いものを作りたい。