*目次 [#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では、今回の反省を生かしたい。