*目次 [#b7ee0ff7] #contents *メンバー [#me130c28] Mr.T Mt.M *課題の内容 [#l4a7e174] **A3の紙に相棒の似顔絵を書くロボットの作成。 [#g4a59cbe] -ひとりにつき一つ以上のプログラムを作成すること。 -ペン以外はキットに含まれる部品を使うこと。 -キットに付属の高価な輪ゴムは切れやすいので切れないように細心の注意を払うこと。 -改良や調整をしやすくするため、ロボット本体だけでなく、プログラムについても可能な部分についてはサブルーチンや関数、マクロなどを使って部品に分けること。 *ロボットの紹介[#n6372d61] ・正面 #ref(./P1000007.JPG,59.5 kB,正面) ・右側面 #ref(./P1000008.JPG,58.7 kb,右側面) ・左側面 #ref(./P1000010.JPG,59.9 kB,左側面) **完成したロボットの名前 [#pa90e3e4] 虎次郎 (黒と黄色でできているから。次につなぐために次郎。) **工夫した点 [#ea1a17fb] -上手にペンを固定し、筆圧を弱すぎないようにした。 -アームの持ち上げて支える力を強くした。 **苦労した点 [#cfc542b4] -筆圧を落とさずにかくのが大変だった。 -ペンの位置がロボットの中心と離れているので描きたい形に動かすのが大変だった。 *プログラムと似顔絵 [#y5bd7dfa] **Mt.M [#q29329e5] #define GO OnFwd(OUT_A+OUT_C); //前進する #define STOP Off(OUT_A+OUT_C); //止まる #define UP OnRev(OUT_B);Wait(50);Off(OUT_B); //ペンを上げる #define DOWN OnFwd(OUT_B);Wait(30);Off(OUT_B); //ペンを下げる #define BACK OnRev(OUT_A+OUT_C); //後退する #define TURN OnFwd(OUT_C);OnRev(OUT_A); //右回り #define RETURN OnFwd(OUT_A);OnRev(OUT_C); //左回り task main() { SetPower(OUT_B,1); SetPower(OUT_A,7); SetPower(OUT_C,7); OnFwd(OUT_C);Wait(780);STOP;UP; //輪郭を描く GO;Wait(120);STOP; //目を描くための予備動作 TURN;Wait(70);STOP; ↓ GO;Wait(30);STOP;UP; ↓ RETURN;Wait(80);STOP; ↓ BACK;Wait(20);STOP; ↓ DOWN;BACK;Wait(35);STOP;UP; //右目を描く BACK;Wait(20);STOP; DOWN;BACK;Wait(35);STOP;UP; //左目を描く RETURN;Wait(90);STOP; //口を描くための予備動作 BACK;Wait(25);STOP; ↓ DOWN;TURN;Wait(40);STOP; //口を描く UP; //終了 } ***工夫した点 [#r57b7c2a] ・相手の似顔絵を書くに当たってシンプルに書くというのにこだわった。 ***今後改善すべき点 [#odfcea79] ・シンプルに作りすぎたと思うのでもっと工夫したプログラミングをしていきたい。 **Mr.T [#b8272bf4] #define down SetPower(OUT_B,0);OnFwd(OUT_B);Wait(50);Off(OUT_B); #define up SetPower(OUT_B,2);OnRev(OUT_B);Wait(50);Off(OUT_B); #define outline SetPower(OUT_A,3);SetPower(OUT_C,7); #define go(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); #define back(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); #define turn_r(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C); #define turn_l(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C); #define mouth(t) SetPower(OUT_A,7);SetPower(OUT_C,1);OnFwd(OUT_C);OnFwd(OUT_A);Wait(t);Off(OUT_A+OUT_C); task main() { outline;down;go(160); //輪郭描き始め up;back(90);turn_l(86);go(70) down;go(240); up;back(90);turn_l(86);go(70) down;go(160); up;back(90);turn_l(86);go(70) down;go(240); //輪郭終了 up;turn_l(170);go(150);turn_r(60);go(70) down;go(35); //目描き始め up;go(20); down;go(35); //目終了 up;back(50);turn_l(120);go(200);turn_r(20); down;go(25); //鼻 up;turn_r(15);go(40);turn_l(60);back(80); down;mouth(120); //口 up; } ***工夫した点 [#naa98f44] ***今後改善すべき点 [#g76bca3e] *感想・考察 [#pfd96caf] **Mt.M [#nf5be2b0] このようなロボットの作成とプログラミングは生まれて初めてだったので上手くできるか不安だった。ロボットは相方のおかげでなんとか完成までたどり着け、プログラミングはそこそこできたと思う。今後これまでやったことをもっと発展して使えるようにしたい。 **Mr.T [#of629169] ロボットの作成やプログラミングは初めてだったので上手にできるか心配でした。ロボットはなんとか完成できましたが、安定感があまりありませんでした。しかし、自分たちで工夫して、少しは改善できました。プログラミングは難しくて、上手くできませんでした。 *コメント [#x0e8643f] - プログラムに説明を入れてください。今回の課題は簡単なので、ひかくてきわからいやすいですが、どんな意図でどんな時にどんな命令をしたのかをはっきりさせた方が、せっかくの工夫がはっきりと伝わると思います -- [[FI]] &new{2010-05-21 (金) 07:37:01}; - プログラムに解説を入れて下さい -- [[TAKA]] &new{2010-05-21 (金) 11:53:50}; #comment コメントをお願いします。