[[2005/A2/課題4]]
*作成中... [#b9dea41a]
NoImage
光の追跡者
*Light pursuer [#h7c43911]
**プログラム [#q1022ba2]
 task main()
 {
     SetSensor(SENSOR_2,SENSOR_LIGHT);
     int light_max = 0;
     int i = 0;
     int MAX = 0;     //ここまでは関数を決めるなどの、お約束事項//
     for(i=0; i<=75; i++){     //とりあえずセンサーを動かしながら一周//
        OnFwd(OUT_A);
        OnRev(OUT_C);
        Wait(1);
        Off(OUT_A+OUT_C);
        if(SENSOR_2>light_max){     //明るい地点を探すため//
           light_max = SENSOR_2;
 	   MAX = i;                 //その地点をMAXとして残す//
 	  }
 	}
     
     Off(OUT_A+OUT_C);     //一周したら止まってみる//
     Wait(100);
     
     repeat(MAX){     //明るい地点を向くまで回転//
        OnFwd(OUT_A);
        OnRev(OUT_C);
        Wait(1);
        Off(OUT_A+OUT_C);
        }
     OnRev(OUT_A+OUT_C);     //明るい方を向いたら少し//
     Wait(50);               //進んで、休む//
 
 until(SENSOR_2 < light_max-5) //最大から5とか適当な値離れるまで前進続ける
 
     Off(OUT_A+OUT_C);
 }


**作成者 [#f9654d49]
 キャベツ 富岡 トマト
**ロボの話 [#r09a8a67]
 今までのロボ達の「バランスの悪さ」と戦ううち、培われた技術。
 部品の組合せや特にコレといった工夫もないように見えるであろう、今回のロボ。
 ...個人的には今回のコンセプト「シンプルイズザベスト」にのっとり、
 シンプルさの中に秘められた、安定性、を見せつける。
 
 走ってるうちに壊れなければ良い
 ......と思って組み立てた時には、まさか、
 とーますに軽く分解されるとは、思いもしなかったキャベツとトマトなのでした。
 
**プログラムの話 [#xbb72a6d]
 今回も、お手本を参考にしつつ。
 自分なりの理解をしてプログラムを作成。(理解するのに時間がかかり過ぎ...)
 プログラムとしては、
  1.ロボットが一周する事を、おそらく75分割
  2.分割した事で、明るい方向を(MAX)番号として記憶
  3.その番号の地点まで回転
  4.明るい方を向いたら、少し前進
  5.1に戻って繰り返し
 というような形で考えてみた。
 ...が、ロボが全く同じ回転を繰り返す事が前提となっている事や、
 一周が75等分では、おおざっぱ過ぎたかも...。
 ついでに言うと、携帯電話のライトで試したのみで、
 懐中電灯では、まだ試していない...。
**感想など [#mc707c26]

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