*目次 [#vb047a36]
#contents

*はじめに [#gca5125f]
課題はお絵かきロボットの作成である。&br;
詳しい内容は&br;
自分またはチームメイトの似顔絵を描くロボットを製作しなさい。&br;以下の点に注意すること。&br;
・マクロや関数、サブルーチンなどを使い、main関数がなるべく単純になるようにプログラムを作ること。&br;
・定数名やマクロなどは分かりやすい名前を用いること。・余裕をもってA4の紙の中に収まる大きさにすること。いくら小さくてもよい。&br;
・ペン以外はキットの部品を使うこと。&br;
・輪ゴムは切れやすく高価なので慎重に扱い、張力がかかりすぎないようにすること。&br;
(>2016年度前期/課題1)より&br;
今回は、自分の顔を少し美化して描いてみることにした。

*ロボット本体の説明 [#y97e9f0f]
#ref(image2.JPG)
ロボット本体の右側に、&br;
車輪の回転に使用している部品と同じものを装着し、&br;
ペンのUP、DOWNに利用した。&br;
ペンの固定方法は、&br;
タイヤを使用し両側からペンを挟んだ。&br;
加えて、進んだときに、ペンが前に倒れてしまわぬよう&br;
ほかのパーツを用い前方を固定した。&br;

#ref(image1.JPG)
ペンが上下にずれてしまわぬよう、&br;
ペンに輪ゴムを巻き付け滑り止め代わりとした。

*プログラミングの説明 [#x55c6767]
定義文
 #define circle OnFwd(OUT_B,75);Wait(3200);Off(OUT_B);
 #define go_f(t) OnFwd(OUT_BC,75);Wait(t);Off(OUT_BC);
 #define go_r(t) OnRev(OUT_BC,75);Wait(t);Off(OUT_BC);
 #define turn_r OnFwd(OUT_C,75);OnRev(OUT_B,75);Wait(300);Off(OUT_BC);
 #define turn_l OnFwd(OUT_B,75);OnRev(OUT_C,75);Wait(300);Off(OUT_BC);
 #define pen_down OnFwd(OUT_A,75);Wait(100);Off(OUT_A);
 #define pen_up OnRev(OUT_A,75);Wait(100);Off(OUT_A);

#ref(image3.jpg)
最初、NXTが紙の中心にある状態からスタートする。&br;
書き順は写真の通りである。
 task_main()
 {
  circle;//輪郭
  define go_r(800);//顔と髪の境目
  pen_up;
  turn_r;
  go_f(200);
  turn_l;
  go_f(250);
  pen_down;
  go_f(250);//目��
  pen_up;
  go_f(250);
  pen_down;
  go_f(250);//目��
  pen_up;
  turn_r;
  go_f(250);
  turn_r;
  go_f(200);
  pen_down;
  go_f(350);//口
  pen_up;
 }
プログラミングをスマートにまとめるため、&br;
定義式を多く使用した。

*感想 [#bdf73b90]

初めてのプログラミングだったが、&br;
チームの仲間や先生から教えてもらい、&br;
なんとか完成させることができた。&br;
今回の反省点は、ロボットにペンを持たせるために&br;
数多くのパーツを使用し、まるで戦車のような&br;
たたずまいになってしまったことだ。&br;
次回はもっと工夫し、シンプルにまとめたいと思う。&br;
一方、似顔絵はかなりシンプルに仕上がった。&br;
当初の、自分の顔を美化するという目的は&br;
達成できたが、もう少し複雑な似顔絵も&br;
書いてみたいと思った。&br;
プログラミングにも慣れてきたので、&br;
課題2では、今回の反省を生かしたい。

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