[[2005/C2]]
*五角形に動くキャタピラロボット [#z24f6e92]
 task main()
 {
     OnFwd(OUT_A);
     OnFwd(OUT_C);
     Wait(150);
     repeat(4){
     OnRev(OUT_C);
     Wait(80);
     OnFwd(OUT_C);
     Wait(150);
     }
     Off(OUT_A+OUT_C);
 }

-何秒回転させるかを決めるのが大変だった。
-repeat使って簡単に見やすく作ってみました☆

*「左」を書くロボット [#kadai1]
 task main()
 {
     OnFwd(OUT_A+OUT_C);          //1画目
     Wait(100);
     OnFwd(OUT_B);                //ペン上げ
     Wait(50);
     Off(OUT_A+OUT_B+OUT_C);
     Wait(200);
     
     OnRev(OUT_A);                
     Wait(130);
     OnRev(OUT_B);                //ペン下げ
     OnRev(OUT_A+OUT_C);          //2画目
     Wait(150);
     OnFwd(OUT_B);        //ぺン上げ
     Wait(50);
     Off(OUT_A+OUT_B+OUT_C);
     Wait(200);
     
     OnFwd(OUT_A+OUT_C);
     Wait(200);
     OnRev(OUT_A);
     Wait(108);
     OnRev(OUT_A+OUT_C);
     Wait(75);
     OnRev(OUT_B);        //ペン下げ
     OnRev(OUT_A+OUT_C);          //3画目
     Wait(90);
     OnFwd(OUT_B);        //ペン上げ
     Wait(50);
     Off(OUT_A+OUT_B+OUT_C);
     Wait(200);
     
     OnFwd(OUT_A+OUT_C);
     Wait(180);
     OnRev(OUT_A);
     Wait(85);
     OnRev(OUT_A+OUT_C);
     Wait(85);
     OnFwd(OUT_A+OUT_C);          //4画目
     OnRev(OUT_B);        //ペン下げ
     Wait(55);
     OnFwd(OUT_B);                //ペン上げ
     Wait(50);
     Off(OUT_A+OUT_B+OUT_C);
     Wait(200);
 
     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(90);
     OnRev(OUT_A+OUT_C);
     Wait(15);
     OnRev(OUT_B);        //ペン下げ
     OnRev(OUT_A+OUT_C);          //5画目
     Wait(120);
     Off(OUT_A+OUT_B+OUT_C);
 }   
-3画目からが難しかった。
-予想以上に思いどおりに動いてくれなくて苦労した。
-サブルーチンを使って書き換えると下のようになった。少しは見やすくなったと思う。
 sub up_pen()           //ペン上げ
 {
      OnFwd(OUT_B);
      Wait(50);
      Off(OUT_A+OUT_B+OUT_C);
      Wait(200);
 }
 task main()
 {
      OnFwd(OUT_A+OUT_C);          //1画目
      Wait(100);
      up_pen();
    
      OnRev(OUT_A);                
      Wait(130);
      OnRev(OUT_B);                //ペン下げ
      OnRev(OUT_A+OUT_C);          //2画目
      Wait(150);
      up_pen();
    
      OnFwd(OUT_A+OUT_C);
      Wait(200);
      OnRev(OUT_A);
      Wait(108);
      OnRev(OUT_A+OUT_C);
      Wait(75);
      OnRev(OUT_B);        //ペン下げ
      OnRev(OUT_A+OUT_C);          //3画目
      Wait(90);
      up_pen();
     
      OnFwd(OUT_A+OUT_C);
      Wait(180);
      OnRev(OUT_A);
      Wait(85);
      OnRev(OUT_A+OUT_C);
      Wait(85);
      OnFwd(OUT_A+OUT_C);          //4画目
      OnRev(OUT_B);        //ペン下げ
      Wait(55);
      up_pen();
 
      OnFwd(OUT_A);
      OnRev(OUT_C);
      Wait(90);
      OnRev(OUT_A+OUT_C);
      Wait(15);
      OnRev(OUT_B);        //ペン下げ
      OnRev(OUT_A+OUT_C);          //5画目
      Wait(120);
      Off(OUT_A+OUT_B+OUT_C);
 }   

*センサを使って机の周りを動くキャタピラロボット [#kadai2]
 task main()
 {
     SetSensor(SENSOR_1,SENSOR_TOUCH);
     SetSensor(SENSOR_3,SENSOR_TOUCH);
     
     while(true)
     {
         if(SENSOR_3 == 1)      //右のセンサが押されている
 	{
 	    OnFwd(OUT_A+OUT_C);   //直進
 	} else {           //右のセンサが押されていない
 	    Off(OUT_C);       //右に回る
 	    OnFwd(OUT_A);
 	}
 	
 	if(SENSOR_1 == 1)      //左のセンサが押されている
 	{
 	OnRev(OUT_A);        //左に曲がる
 	OnFwd(OUT_C);  Wait(170);
 	}
    }
    
    Off(OUT_A+OUT_C);
 }
-机の足にタイヤがひっかからないように、センサがうまく働くように工夫してロボットを作った。
-センサがうまく働かず、右に回りすぎて困った。
#ref(img_0007_Medium.jpg)

*黒い線上を動くロボット(モータ2個、センサ1個) [#d5b47586]
*黒い線上を動くロボット(モータ2個、センサ1個) [#kadai3-1]
 task main ()
 {
     SetSensor(SENSOR_1, SENSOR_LIGHT);
 
     while (true) {
         if (SENSOR_1 < 40) {          // 線上にいるとき
             OnFwd(OUT_A);
             Off(OUT_C); 
         } else {                      // 線から外れたとき
             Off(OUT_A);
             OnFwd(OUT_C);
         }
     }
 }
-これはとりあえず一周はするが、ショ−トカットしてしまう。

 task main ()
 {
    SetSensor(SENSOR_1,SENSOR_LIGHT);
    
    while (true) {
        if (SENSOR_1<40) {
        if (SENSOR_1<40) {             // 線上にいるとき
            OnFwd(OUT_C+OUT_A);
	} else {
	} else {                      // 線から外れたとき
	    OnFwd(OUT_A);
	    OnRev(OUT_C);
	    Wait(50);
	    OnFwd(OUT_C);
	    OnRev(OUT_A);
	    until(SENSOR_1<40);
	}
    }
 }
-何種類か考えたがやはりうまくいかない。
-何種類か考えたが、やはりうまくいかない。
早くもプログラミングの壁にぶつかってしまったみたい。早く壁を乗り越えたい…。

コメントをお願いします
-サブルーチンや関数を使ってみましょう。 -- [[松本(教員)]] &new{2005-11-11 (金) 22:59:48};

#comment


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