[[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);
         }

         Off(OUT_A+OUT_C);//一回AとCのモーターを止める。
         pen_up();//ペンを上げる

         OnRev(OUT_B);//ここでペンをあげる。
         Wait(100);
#ref(nigaoe2.jpg)

         OnRev(OUT_C);//そのあとペンをあげたままの状態で、目をかくために移動させる。
         OnRev(OUT_C);//移動
         OnFwd(OUT_A);
         Wait(80);
         OnFwd(OUT_C);
         Wait(30);
         OnRev(OUT_C);
         Wait(98);

         Off(OUT_A+OUT_C);//AとCのモーターをOffにする。

         OnFwd(OUT_B);//Bのモーターを動かしてペンを紙につける。
         Wait(100);
         Off(OUT_B);

         pen_down();//ペンを下げる。
         OnFwd(OUT_A+OUT_C);//右目を描く。
         Wait(50);
         Off(OUT_A+OUT_C);
         pen_up();//ペンをあげる。

         OnRev(OUT_B);//眉間をあけるため一度ペンをあげる。
         Wait(100);

         OnFwd(OUT_A+OUT_C);//ペンをあげた状態でAとCのモーターを動かして眉間の間隔だけ進む。
         Wait(15);

         Off(OUT_A+OUT_C);//左目を描くためいったん止まり、ペンを紙につける。
         OnFwd(OUT_B);
         Wait(100);
         Off(OUT_B);

        pen_down();//ペンを下げる。
         OnFwd(OUT_A+OUT_C);//左目をかく
         Wait(50);

         Off(OUT_A+OUT_C);//左目を描き終えたらいったん止まりペンを上げる。
         OnRev(OUT_B);
         Wait(100);
         Off(OUT_B);
#ref(nigaoe3.jpg)

        pen_up();//ペンを上げる。

         OnRev(OUT_A+OUT_C);//目の長さより少し長くバックする。
         Wait(53);

         OnFwd(OUT_C);//バックした状態でCを正回転させることで、ロボットの向きをかえる。
         Wait(95);

         OnFwd(OUT_A);
         Wait(30);

         Off(OUT_A+OUT_C);
         OnFwd(OUT_B);
         Wait(100);
         Off(OUT_B);
         pen_down();ペンを下げる。

         OnFwd(OUT_A+OUT_C);//鼻をかく。
         Wait(35);
         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

良かった点
+ペンの位置やサブルーチン等いろいろと工夫しているようです。

改善点
+ロボットの説明がないのでどんなロボットを作ったかわかりません。
+一部プログラムをうまく貼付けられていない等、ホームページの形式を見やすくしたほうがいいかもしれません
+工夫した点は図や写真を使うとわかりやすいと思います。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS