[[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型にしたが、座標計算が雑で狙い通りの線が引けなかった。次はさらにクオリティの高いものを作りたい。