[[2008a/A7/課題1右]] *お絵描きロボット [#f930656c] <ロボットの説明> ●似顔絵を描くロボットで、描きやすいようにペンをロボットの真ん中に組み込んだ。 <工夫点> ●前髪をギザギザしたかったので、プログラミングの際RevとFwdを使い、回転時間を摩擦に気をつけながら設定をした。 ●プログラムが重複するところがあったため、repeatを使った。 ●ペンをロボットの真ん中に設置したためプログラミングしやすかった。 ●サブルーチンを利用した。 <今後の課題> ●プログラムを見やすく、簡潔にする。 ●目に表情がないので表情をつけたい。 ●ペンがうまく紙につかず上手にかけないので、ペンの位置や上下させる時間などの細部を考える。 <顔のプログラム> #define PEN_TIME 100 sub pen_up() { Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(PEN_TIME); Off(OUT_B);//ペンを上げるためのサブルーチン。 } sub pen_down() { Off(OUT_A+OUT_C); OnFwd(OUT_B); Wait(PEN_TIME); Off(OUT_B);//ペンを下げるためのサブルーチン。 } task main() { OnFwd(OUT_A+OUT_C);//輪郭を書き始める Wait(130); Off(OUT_C);//CをOffすることで顎の丸みをつける。 Wait(390);//少し面長にしたかったのでCを長めにOffし、小さめの半円を描かせた。 OnFwd(OUT_A+OUT_C); Wait(130); #ref(nigaie1.jpg) OnRev(OUT_C);//ここからペンをつけたままの状態で回転させ、前髪のギザギザを描くのに備える。 Wait(180); Off(OUT_C); repeat(3){ OnFwd(OUT_C);//ここからrepeatを使って3回ギザギザを描かせる。 Wait(50); OnRev(OUT_A); Wait(130); OnFwd(OUT_A); Wait(50); OnRev(OUT_C); Wait(130); Off(OUT_C); } pen_up();//ペンを上げる #ref(nigaoe2.jpg) OnRev(OUT_C);//移動 OnFwd(OUT_A); Wait(80); OnFwd(OUT_C); Wait(30); OnRev(OUT_C); Wait(98); pen_down();//ペンを下げる。 OnFwd(OUT_A+OUT_C);//右目を描く。 Wait(50); pen_up();//ペンをあげる。 OnFwd(OUT_A+OUT_C);//ペンをあげた状態でAとCのモーターを動かして眉間の間隔だけ進む。 Wait(15); pen_down();//ペンを下げる。 OnFwd(OUT_A+OUT_C);//左目をかく Wait(50); #ref(nigaoe3.jpg) pen_up();//ペンを上げる。 OnRev(OUT_A+OUT_C);//目の長さより少し長くバックする。 Wait(53); OnFwd(OUT_C);//バックした状態でCを正回転させることで、ロボットの向きをかえる。 Wait(95); OnFwd(OUT_A); Wait(30); pen_down();ペンを下げる。 OnFwd(OUT_A+OUT_C); Wait(35);//鼻をかく。 #ref(nigaoe4.jpg) pen_up();//ペンをあげる。 OnFwd(OUT_A+OUT_C); Wait(50); Rev(OUT_A); Wait(60);//移動。 pen_down();//ペンをさげる。 OnFwd(OUT_A+OUT_C); Wait(80 );//口をかく。 #ref(nigaoe5.jpg) Off(OUT_A+OUT_C+OUT_B); } <感想> 初めてロボットのプログラミングをしてみて、普通に打ち込むのは簡単だけどどうやって簡潔に見やすいプログラミングをするかが大変だった。 <コメントをお願いします> #comment 良かった点 +ペンの位置やサブルーチン等いろいろと工夫しているようです。 改善点 +ロボットの説明がないのでどんなロボットを作ったかわかりません。 +一部プログラムをうまく貼付けられていない等、ホームページの形式を見やすくしたほうがいいかもしれません +工夫した点は図や写真を使うとわかりやすいと思います。