2019a/Member/Nove/Mission1 #contents *課題について [#wf61b35c] これまで暮らしたことのある都道府県名、または市町村名から漢字2文字以上、かつ合計画数10画以上のものを選ぶ。そして、それをA4用紙に書くロボットを作成しなさい。 **選んだ文字 [#c3b67117] 自分は今住んでいる「松本」を選びました。 *ロボット本体の説明 [#q1394e9f] **全体として [#z685660b] 初め、四輪ロボットで動かしていたのですが「紙がぐちゃぐちゃになる」、「回転が大きくなる」という難点がありました。最終的に二輪+補助輪のロボットにしました。 二輪にするにあたり、作った補助輪の写真を上げておきます。これはロボットの道具に付随していたテキストの物を作りました。 #ref(http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=s_IMG_20190606_234003%20%281%29.jpg&refer=2019a%2FMember%2FNove%2FMission1) **工夫した点 [#i216a38b] タイヤのちょうど真ん中にペン先が来るよう考えました。殆ど最初に作ったロボットと同じですが、黒の部品を前にずらすことでペンを動かすモーターを固定できるようにしました。動かした部分の写真です。 #ref(2019a/Member/Nove/Mission1/s_IMG_.jpg) **ペン部分 [#o2c5496b] 最後にペンを動かすモーターの説明です。 今回、自分は歯車を前後に回すことで、ペンを付けた黄色の部品を上下に動かそうと考えました。モーターと取り付けた歯車のみの写真です。 #ref(http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=s_IMG_20190606_234129.jpg&refer=2019a%2FMember%2FNove%2FMission1) *プログラミングについて [#n70522f3] **松のプログラム [#jc4ff3b9] (ペンの上下移動)...タイヤと同じように前後回転で鉛筆を上げ下げしました。 #define pen_up OnFwd(OUT_B);Wait(10);Off(OUT_B)//ペンを上げる #define pen_down OnRev(OUT_B);Wait(10);Off(OUT_B)//ペンを下げる 「松」の字で使用したdefineを先に羅列します。 #define TURN_TIME 80 #define turnright0 OnRev(OUT_C);OnFwd(OUT_A);Wait(40);Off(OUT_AC);Wait(10); #define turnright1 OnRev(OUT_C);OnFwd(OUT_A);Wait(110);Off(OUT_AC);Wait(10); #define turnright2 OnRev(OUT_C);OnFwd(OUT_A);Wait(55);Off(OUT_AC);Wait(10); #define turnright3 OnRev(OUT_C);OnFwd(OUT_A);Wait(80);Off(OUT_AC);Wait(10);//90度 #define turnleft0 OnRev(OUT_A);OnFwd(OUT_C);Wait(60);Off(OUT_AC);Wait(10); #define turnleft1 OnRev(OUT_A);OnFwd(OUT_C);Wait(70);Off(OUT_AC);Wait(10); #define turnleft2 OnRev(OUT_A);OnFwd(OUT_C);Wait(110);Off(OUT_AC);Wait(10); #define turnleft3 OnRev(OUT_A);OnFwd(OUT_C);Wait(20);Off(OUT_AC);Wait(10); #define turnleft4 OnRev(OUT_A);OnFwd(OUT_C);Wait(110);Off(OUT_AC);Wait(10); #define turn0 Off(OUT_A);OnRev(OUT_C);Wait(170);Off(OUT_AC);Wait(10); 以下、松の画数で説明していきます。 //の後にで先程羅列したdefineの説明をいれています。 OnFwd(OUT_AC);Wait(50);Off(OUT_AC);Wait(20); pen_up; turn0; //1画目から2画目の移動。片足止めた状態で回転すると、2画目の最初の位置にペンが来るためこうしました。 OnFwd(OUT_AC);Wait(10);Off(OUT_AC);Wait(20); pen_down; OnFwd(OUT_AC);Wait(130);Off(OUT_AC);Wait(20); pen_up; OnRev(OUT_AC);Wait(100);Off(OUT_AC);Wait(20); turnright0;//3画目に移るための回転 pen_down; OnFwd(OUT_AC);Wait(50);Off(OUT_AC);Wait(20); pen_up; OnRev(OUT_AC);Wait(40);Off(OUT_AC);Wait(20); turnleft0;//4画目に移るための回転 pen_down; OnFwd(OUT_AC);Wait(40);Off(OUT_AC);Wait(20); pen_up; OnRev(OUT_AC);Wait(30);Off(OUT_AC);Wait(20); turnleft1; //5画目に向かうための回転 OnFwd(OUT_AC);Wait(70);Off(OUT_AC);Wait(20); turnright1;//5画目の向きへの回転 pen_down; OnFwd(OUT_AC);Wait(40);Off(OUT_AC);Wait(20); pen_up; OnRev(OUT_AC);Wait(40);Off(OUT_AC);Wait(20); turnleft2; //6画目への移動のための回転 OnFwd(OUT_AC);Wait(10);Off(OUT_AC);Wait(20); turnright2; //6画目を書くための回転 OnFwd(OUT_AC);Wait(40);Off(OUT_AC);Wait(20); pen_up; turnright3; //7画目の始点に移動するための回転 OnFwd(OUT_AC);Wait(20);Off(OUT_AC);Wait(20); turnleft3; //7画目の向きの調整の回転 pen_down; OnFwd(OUT_AC);Wait(40);Off(OUT_AC);Wait(20); turnleft4; //7画目を書いてる途中の回転 OnFwd(OUT_AC);Wait(60);Off(OUT_AC);Wait(20);//上げ pen_up; turnright2; //8画目の向きに傾ける回転 OnRev(OUT_AC);Wait(10);Off(OUT_AC);Wait(20);//下げ pen_down; OnFwd(OUT_AC);Wait(30);Off(OUT_AC);Wait(20);//上げ pen_up; **「松」の終わりから「本」への移動 [#q2ce381f] 本の一画目は移動を少なくするために逆から書くことにしました。 #define turnleft4 OnRev(OUT_A);OnFwd(OUT_C);Wait(110);Off(OUT_AC);Wait(10); turnright4; OnFwd(OUT_AC);Wait(20);Off(OUT_AC);Wait(20); turnright3;//下げ pen_down; **本のプログラム [#r9c3ed72] 先に「本」の字で新たに作ったdefineを説明します。 #define turnleft5 OnRev(OUT_A);OnFwd(OUT_C);Wait(80);Off(OUT_AC);Wait(10); //2画目へ向きを変えるための回転(90°) #define turn1 Off(OUT_C);OnRev(OUT_A);Wait(80);Off(OUT_AC);Wait(10); 2画目は回転後直進です。 3画目は松の木ヘンを利用しました。 4画目への方向転換は90°のため2画目の時のを利用しました。 5画目への移動は片方固定の方が位置が良かったので少し変えました。 まとめると OnFwd(OUT_AC);Wait(110);Off(OUT_AC);Wait(20);//上げ pen_up; OnRev(OUT_AC);Wait(55);Off(OUT_AC);Wait(20); turnleft5; OnRev(OUT_AC);Wait(10);Off(OUT_AC);Wait(20);//下げ pen_down; OnFwd(OUT_AC);Wait(80);Off(OUT_AC);Wait(20);//上げ pen_up; OnRev(OUT_AC);Wait(70);Off(OUT_AC);Wait(20); turnright0; //3画目は松の木ヘンを利用しました。 pen_down; OnFwd(OUT_AC);Wait(80);Off(OUT_AC);Wait(20);//上げ pen_up; OnRev(OUT_AC);Wait(80);Off(OUT_AC);Wait(20); turnleft5;//4画目への方向転換は90°のため2画目の時のを利用しました。 pen_down; OnFwd(OUT_AC);Wait(80);Off(OUT_AC);Wait(20);//上げ pen_up; turn1; //5画目への移動は片方固定の方が位置が良かったので少し変えました。 OnRev(OUT_AC);Wait(80);Off(OUT_AC);Wait(20);//下げ pen_down; OnFwd(OUT_AC);Wait(50);Off(OUT_AC);Wait(20); 書き順を表したものです。画数と照らし合わせるようです。 #ref(http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=s_IMG_20190705_200359.jpg&refer=2019a%2FMember%2FNove%2FMission1) *書いた文字 [#ra4f81df] #ref(http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=s_IMG_20190606_234943.jpg&refer=2019a%2FMember%2FNove%2FMission1) *最後に [#c69cb117] defineが多すぎると感じました。 ほかの人のを見てXY軸でやることが一番いいのではないかと感じました。 スッキリとしたプログラムになるよう工夫します。