[[2019a/Member]]
#contents
*課題1 [#m73b4937]
これまで住んだことのある都道府県名、市町村名、地区名などの中から2文字以上、かつ合計10画以上のものを選び、それをA4の紙を書くロボットを製作せよ。
**今回書いた漢字 [#b58e722a]
今住んでいる地域の「信州」を選択しました。
*ロボットの説明 [#maf3e787]
#ref(./20190606_203429838.jpg,29%,今回制作したロボット)
縦方向を車のように動かし、ペンは上下にあげられるようにしました。
縦方向のモーター[A]、横方向のモーターは[C]、筆を上げる下げるのモーターは[B]としました。
縦方向のモーターは[A]、横方向のモーターは[C]、筆を上げる下げるモーターは[B]としました。
#ref(./20190606_203436382.jpg,20%,今回制作したロボット)
横方向は車の前に道を作りその上をタイヤで動かすという作りにしています。
**そしてこのロボットでかけた字がこちら [#n52b536a]
#ref(./line_1559820547263.jpg,25%,信州)
書き順としてはこのようになっています。
#ref(./41783.jpg,20%,書き順)
*全体のプログラムと解説 [#n3273a84]
まずはペンを上げる、下げるなどの繰り返す動きを定義しました。
 #define Up_Pen OnFwd(OUT_B);Wait(200);Off(OUT_B);
 #define Down_Pen OnRev(OUT_B);Wait(10);Off(OUT_B);
『Up_Pen』にてペンを上げ2秒間上げたまま止めるという定義。『Down_Pen』ではペンを下げるという動作の定義を付けました。
2秒という数字は動きの間で少し余白が開くことでロボットへの負担が減ることと、なるべく繰り返し同じ動きができることに配慮したためです。

信州の「言」の字は往復で横に線を六度書くことでプログラムの量を減らしています。
 #define Go OnFwd(OUT_C);Wait(20);Off(OUT_C);
 #define Yoko
   Down_Pen;OnFwd(OUT_A);Wait(20);Off(OUT_A);Up_Pen;OnRev(OUT_A);Wait(22);Off(OUT_A);
『Go』では縦方向に少し動くこと、『Yoko』では筆を下ろして横にひき、筆を上げて元に戻るという動きの定義をしました。
この単純な動きを交互に六度繰り返すことで、『言』を表現しようとしました。


「州」の字は点とその横に縦線を引くというプログラムを三度繰り返すことで簡略化を図っています。
 #define Tate OnFwd(OUT_C);Wait(10);Off(OUT_C);Down_Pen;Up_Pen;
これは『州』の字の点の部分を筆を下ろして上げるだけで書くプログラムです。

 OnFwd(OUT_A);OnRev(OUT_C);Wait(1);Off(OUT_AC);Down_Pen;OnFwd(OUT_C);Wait(80);
 Off(OUT_C);Up_Pen;
ここで右と上に少し移動し『州』の点の横の縦棒を書いて筆を上げるまでの動作となります。

 OnFwd(OUT_A);Wait(4);Off(OUT_A);OnRev(OUT_C);Wait(60);Off(OUT_A);
最後に少し横と上に移動することで次に点を書くための位置まで移動して、この定義を繰り返すことで『州』の字を書けるようにしました。


 task main()
 {
     Up_Pen;
     Wait(100);
     Down_Pen;
     OnFwd(OUT_C); 
     OnRev(OUT_A);
     Wait(30);
     Off(OUT_AC);
     Up_Pen;
ここでは「信」の字のにんべんの払いで縦横方向を同時に動かすことで、満足できる払いになりました。縦方向と横方向のモーターを同時に動かすことで払いを表現しようとしています。

     OnFwd(OUT_A);
     Wait(5);
     Off(OUT_A);
     Down_Pen;
     OnFwd(OUT_C);
     Wait(80);
     Off(OUT_C);
     Up_Pen;
ここでは「信」のにんべんの次の縦棒を書くプログラムとなっています。


     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(10);
     Off(OUT_A);
     Wait(60);
     Off(OUT_C);
「言」を書くために位置の移動をしています。


     Yoko;
     Go;
     Yoko;
     Go;
     Yoko;
     Go;
     Yoko;
     Go;
     Yoko;
     Go;
     Yoko;
ここで定義した動きを六度繰り返すことで「言」の横棒をすべて先に引いてしまいます。


     Down_Pen;
     OnFwd(OUT_C);
     Wait(10);
     Off(OUT_C);
     Up_Pen;
     OnRev(OUT_C);
     OnFwd(OUT_A);
     Wait(10);
     Off(OUT_AC);
     OnFwd(OUT_C);
     Wait(20);
     Off(OUT_C);
     Down_Pen;
     Up_Pen;
ここの動きは「言」の四角の残った縦棒を書いて「信」を書き終えるまでのプログラムです。


     OnRev(OUT_A);
     OnFwd(OUT_C);
     Wait(30);
     Off(OUT_AC);
「州」の字の最初の位置まで移動して調整する動きです。


     Tate;
     Tate;
     Tate;
 }
これで「州」を書き終えるという形となっています。
*まとめ [#scc2c1ac]
・良かった点
同じ動きを繰り返すことであまり長いプログラムにはならなかった。

払いがきれいにできるようになった。

・改善できる点
同じ動きを何度もするのでぎりぎり読めるか読めないかの字になってしまった。

「州」で棒の高さをそろえられなかった。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS