目次
#contents
*ロボット本体の説明 [#m02ab22e]
#ref(2016b/Member/guchikou/Mission1/ロボ1.jpeg,30%,全体図)
プログラムを簡単するためにロボットの動きをアームの上げ下げ、前後(y軸)の動き、アームの左右(x軸)の動きの3つの動作に分けた。
**アームの動き [#y7347251]
#ref(2016b/Member/guchikou/Mission1/ロボ6.jpeg,30%,アーム)
アームはペンをブロックにゴムでつけ、それをモータで上下させるシンプルなものにした。
**前後(y軸)の動き [#j24c0dd4]
#ref(2016b/Member/guchikou/Mission1/ロボ4.jpeg,30%,前後の動き)
後輪を回転させることで前後の動きをさせた。
**アームの左右(x軸)の動き [#kb25d59d]
#ref(2016b/Member/guchikou/Mission1/ロボ3.jpeg,30%,レール)
#ref(2016b/Member/guchikou/Mission1/ロボ5.jpeg,30%,レール)
#ref(2016b/Member/guchikou/Mission1/ロボ3.jpeg,30%,x軸)
x軸の動きが今回の課題で最も苦労した点だった。ブロックを組み合わせることで写真のレールのようなものを作り、その上をアームが滑るようにした。
*プログラムの説明 [#oa59f1d1]
 #define go(t) OnFwd(OUT_B);Wait(t);Off(OUT_B);Wait(100); 
 #define back(t) OnRev(OUT_B);Wait(t);Off(OUT_B);Wait(100);
 #define UP OnFwd(OUT_A);Wait(20);Off(OUT_A);Wait(100);
 #define DOWN OnRev(OUT_A);Wait(20);Off(OUT_A);Wait(100);
 #define go_left(t) OnFwd(OUT_C);Wait(t);Off(OUT_C);Wait(100);
 #define go_right(t) OnRev(OUT_C);Wait(t);Off(OUT_C);Wait(100);
 task main()
 {
      UP;
      go_left(8);
      DOWN;
      go_left(16);
      UP;
      go_right(8);
      DOWN;
      go(24);
      go_right(8);
      back(16);
      go_left(16);
      go(16);
      go_right(8);
      UP;
      back(8);
      go_right(8);
      DOWN;
      go_left(16);
      UP;
      go_right(24);
      DOWN;
      go(16);
      go_left(32);
      back(16);
      UP;
 }
     
**定義について [#v1c9bd8a]
 #define go(t) OnFwd(OUT_B);Wait(t);Off(OUT_B);Wait(100); 
 #define back(t) OnRev(OUT_B);Wait(t);Off(OUT_B);Wait(100);
 #define UP OnFwd(OUT_A);Wait(20);Off(OUT_A);Wait(100);
 #define DOWN OnRev(OUT_A);Wait(20);Off(OUT_A);Wait(100);
 #define go_left(t) OnFwd(OUT_C);Wait(t);Off(OUT_C);Wait(100);
 #define go_right(t) OnRev(OUT_C);Wait(t);Off(OUT_C);Wait(100);

今回の課題では6つの動作を定義した。定義した内容は以下の通りである。
-t秒間前進する。1秒間止まる。
-t秒間後退する。1秒間止まる。
-ペンを上げる。1秒間止まる。
-ペンを下げる。1秒間止まる。
-アームを左へ動かす。1秒間止まる。
-アームを右へ動かす。1秒間止まる。

各動作の間に止まる時間を入れなければ文字の角がきれいに書けなかったのですべての動作に1秒間止まる動作を付けた。これらの動作を定義したことでメイン動作のプログラムを簡略化できた。
**動作について [#h00658a4]
動作を少なくするために書き順などは無視した。横線を書く際、左から右へ書いたほうが上手く書けたため、なるべく左から右へ書くように工夫した。また、ペンの上げ下げを減らすためにつなげられる部分は一筆書きのように書いた。
*まとめ [#u8a5fb1d]
#ref(2016b/Member/guchikou/Mission1/ロボ2.jpeg,30%,文字)
上が本番で書い文字である。文字をきれいに書くことができたので、苦労して作業した甲斐があった。今回の課題では、アームを左右に動かすこと(x軸)が難しかった。ロボットを作ることに時間をかけたため、プログラミングを単純なものにできた。また、動作を3つに分けたことできれいな文字を書くことができた。文字を5cm四方程度の大きさにしたことも上手く書けた要因だと考えられる。改善点としては、動作をゆっくりにするためにギアの使い方を工夫することがあげられる。ロボットを動かしても最初は読める文字を書けなかったが、失敗を繰り返して上達できて楽しかった。

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