[[2019a/Member] *課題1 [#j4fa8c8d] これまで住んだことのある都道府県、市町村名、地区名などの中から2文字以上、かつ合計10画以上のものを選び、それをA4の紙に書くロボットを製作せよ。 *選んだ文字 [#o4f64b97] 愛媛出身だったため「四国」を選んだ *ロボットの説明 [#a504126d] **全体の構造 [#h35ab329] 今回作成したロボットは、 �� ロボット全体を前後(Y軸方向)に動かす機構 �� ペンの部分を左右(X方向)に動かす機構 �� ペンを上げ下げさせる機構 の3つに分かれている。 ロボットの動きとしては、3つの機構を作ることで、前後(Y軸方向)、左右(X方向)を ペンが動き回れる構造となっている。 **�� ロボット全体を前後(Y軸方向)に動かす機構 [#k63d5548] �,竜々修蓮∩宛紂�Y軸方向)の動力を担当している。Aのモーターに出力を入れることで動き,1つのモーターで動かすため、前後にしか動かない。&ref(2019a/Member/Asahi/Mission1/IMG_1719.jpg,10%,�ゝ々�); **�� ペンの部分を左右(X方向)に動かす機構 [#te9253b7] �△竜々修蓮∈険Α�X方向)の動力を担当している。構造をアームにすることで、1つのモーター でペンを左右に動かすことに成功した。 &ref(2019a/Member/Asahi/Mission1/IMG_1720.jpg,10%,�ゝ々�); **�� ペンを上げ下げさせる機構 [#u1c24997] ��の機構は、ペンの上げ下げを担当している。�△竜々修鉢�の機構にギアを取り付けることにより,1つのモーターで上げ下げすること可能にした。 &ref(2019a/Member/Asahi/Mission1/IMG_1721.jpg,10%,�ゝ々�); *メインプログラムの準備 [#lde830a2] **ペンを前後(Y軸方向)に移動させるプログラム [#o2c41cc2] �,竜々修�前後(Y軸方向)に動くようにプログラムする。 #define st OnFwd(OUT_A,50);Wait(700);Off(OUT_A);Wait(1000); #define ba OnRev(OUT_A,50);Wait(700);Off(OUT_A);Wait(1000); #define st OnFwd(OUT_A,50);Wait(700);Off(OUT_A);Wait(1000);//上から下に書く縦線 #define ba OnRev(OUT_A,50);Wait(700);Off(OUT_A);Wait(1000);//下から上に書く縦線 主にこの定義した物を使うが、線の長さは、その都度、調整する。 **ペンを左右(X方向)に移動させるプログラム [#s62611d1] �△竜々修�左右(X方向)に動くようにプログラムする。 #define ri OnFwd(OUT_B,25);Wait(700);Off(OUT_B);Wait(1000); #define le OnRev(OUT_B,25);Wait(700);Off(OUT_B);Wait(1000); #define ri OnFwd(OUT_B,25);Wait(700);Off(OUT_B);Wait(1000);//左から右に書く横線 #define le OnRev(OUT_B,25);Wait(700);Off(OUT_B);Wait(1000);//右から左に書く横線 主にこの定義した物を使うが、線の長さは、その都度、調整する。 **ペンを上げ下げさせるプログラム [#h0ce46b2] ��の機構が上げ下げするようにプログラムする。 #define dw OnFwd(OUT_C,23);Wait(450);Off(OUT_C);Wait(1000); #define up OnRev(OUT_C,20);Wait(450);Off(OUT_C);Wait(1000); 主にこの定義した物を使うが、線の長さは、その都度、調整する。 *四を書くためのプログラム [#rf71996c] **四の枠組みを書くためのプログラム [#t6fca199] up; st;//左側の縦線 up; dw; le;//下側の横線 up; dw; ba;//右側の縦線 up; dw; ri;//上側の横線 up; 毎回ペンの上げ下げを入れているのは,ペンを安定させるためである. **四の中身を書くためのプログラム [#hacee9a3] OnRev(OUT_B,30);Wait(100);Off(OUT_B);Wait(1000);//左側の曲線 OnFwd(OUT_C,30);Wait(350);Off(OUT_C);Wait(1000); OnFwd(OUT_A,50);Wait(400);Off(OUT_A);Wait(1000); up; OnRev(OUT_A,50);Wait(300);Off(OUT_A);Wait(1000);//右側の曲線 OnRev(OUT_B,30);Wait(100);Off(OUT_B);Wait(1000); dw; OnFed(OUT_A,50);Wait(500);Off(OUT_A);Wait(1000); OnRev(OUT_B,20);Wait(250);Off(OUT_B);Wait(1000); up; *国を書くためのプログラム [#cd749675] **国の枠組みを書くためのプログラム [#lc3f4e35] dw; st;//右側の縦線 up; dw; ri;//下側の横線 OnRev(OUT_C,30);Wait(200);Off(OUT_C);Wait(1000); OnRev(OUT_C,30);Wait(350);Off(OUT_C);Wait(1000); ba;左側の縦線 up; dw; le;//上側の横線 up; **国の中身を書くためのプログラム [#i8fe6df1] OnFwd(OUT_A,50);Wait(250);Off(OUT_A);Wait(1000);//一番上の横線 OnFwd(OUT_B,50);Wait(200);Off(OUT_B);Wait(1000); OnFwd(OUT_C,20);Wait(550);Off(OUT_C);Wait(1000); OnRev(OUT_B,30);Wait(250);Off(OUT_B);Wait(1000); up; OnFwd(OUT_A,50);Wait(250);Off(OUT_A);Wait(1000);//二番目の横線 dw; OnRev(OUT_B,30);Wait(250);Off(OUT_B);Wait(1000); up; OnFwd(OUT_A,50);Wait(250);Off(OUT_A);Wait(1000);//三番目の横線 dw; OnFwd(OUT_B,30);Wait(250);Off(OUT_B);Wait(1000); up; OnRev(OUT_B,25);Wait(250);Off(OUT_B);Wait(1000);//縦線 dw; OnRev(OUT_A,50);Wait(100);Off(OUT_A);Wait(1000); up; OnFwd(OUT_A,50);Wait(100);Off(OUT_A);Wait(1000); OnFwd(OUT_B,18);Wait(300);Off(OUT_B);Wait(1000);//点 dw; OnRev(OUT_A,50);Wait(400);Off(OUT_A);Wait(1000); up; *メインプログラム [#i4061d2a] 上記のプログラムをつなげたものである. #define st OnFwd(OUT_A,50);Wait(700);Off(OUT_A);Wait(1000); #define ri OnFwd(OUT_B,25);Wait(700);Off(OUT_B);Wait(1000); #define dw OnFwd(OUT_C,23);Wait(450);Off(OUT_C);Wait(1000); #define up OnRev(OUT_C,20);Wait(450);Off(OUT_C);Wait(1000); #define le OnRev(OUT_B,25);Wait(700);Off(OUT_B);Wait(1000); #define ba OnRev(OUT_A,50);Wait(700);Off(OUT_A);Wait(1000); task main() { up; st; up; dw; le; up; dw; ba; up; dw; ri; up; OnRev(OUT_B,30);Wait(100);Off(OUT_B);Wait(1000); OnFwd(OUT_C,30);Wait(350);Off(OUT_C);Wait(1000); OnFwd(OUT_A,50);Wait(400);Off(OUT_A);Wait(1000); up; OnRev(OUT_A,50);Wait(300);Off(OUT_A);Wait(1000); OnRev(OUT_B,30);Wait(100);Off(OUT_B);Wait(1000); dw; OnFed(OUT_A,50);Wait(500);Off(OUT_A);Wait(1000); OnRev(OUT_B,20);Wait(250);Off(OUT_B);Wait(1000); up; OnFwd(OUT_A,50);Wait(1000);Off(OUT_A);Wait(1000); dw; st; up; dw; ri; OnRev(OUT_C,30);Wait(200);Off(OUT_C);Wait(1000); OnRev(OUT_C,30);Wait(350);Off(OUT_C);Wait(1000); ba; up; dw; le; up; OnFwd(OUT_A,50);Wait(250);Off(OUT_A);Wait(1000); OnFwd(OUT_B,50);Wait(200);Off(OUT_B);Wait(1000); OnFwd(OUT_C,20);Wait(550);Off(OUT_C);Wait(1000); OnRev(OUT_B,30);Wait(250);Off(OUT_B);Wait(1000); up; OnFwd(OUT_A,50);Wait(250);Off(OUT_A);Wait(1000); dw; OnRev(OUT_B,30);Wait(250);Off(OUT_B);Wait(1000); up; OnFwd(OUT_A,50);Wait(250);Off(OUT_A);Wait(1000); dw; OnFwd(OUT_B,30);Wait(250);Off(OUT_B);Wait(1000); up; OnRev(OUT_B,25);Wait(250);Off(OUT_B);Wait(1000); dw; OnRev(OUT_A,50);Wait(100);Off(OUT_A);Wait(1000); up; OnFwd(OUT_A,50);Wait(100);Off(OUT_A);Wait(1000); OnFwd(OUT_B,18);Wait(300);Off(OUT_B);Wait(1000); dw; OnRev(OUT_A,50);Wait(400);Off(OUT_A);Wait(1000); up; } 以上がプログラムである。 *完成した文字 [#t8737637] &ref(2019a/Member/Asahi/Mission1/IMG_1725.jpg,10%,�ゝ々�); 思ったより綺麗に書けたと思う *課題1の反省 [#q7888504] 初めてのプログラミングだったため、なるべく簡単な物にしようと思いx,y軸の物にした。 プログラミングは、予想通り比較的簡単だったが、安定した文字を書くのに苦労した。 その理由はロボット本体にあると考えられるので、それを箇条書きにしてまとめる。 ・�△竜々修鉢�の機構の固定が弱かった。 ・アームが動くことによって重心がずれ、そのたびに筆圧が変わってた。 *感想 [#y7099a6c] 初めてのプログラミングだったが、楽しく行えたと思う。 この調子で次の課題も頑張っていきたい。