- 追加された行はこの色です。
- 削除された行はこの色です。
[[2005/A2/課題4]]
*作成中... [#b9dea41a]
NoImage
光の追跡者
*Light pursuer [#h7c43911]
**プログラム [#q1022ba2]
#define MEGANE 120 //ロボが一周する時間
#define LEFT_X OnFwd(OUT_A);OnRev(OUT_C);Wait(1);Off(OUT_A+OUT_C);//左回転
#define RIGHT_X OnFwd(OUT_C);OnRev(OUT_A);Wait(1);Off(OUT_A+OUT_C);//右回転
#define MEGANE 100 //ロボが一周する時間(電池残量、床の摩擦力による)
#define LEFT_X OnFwd(OUT_A);OnRev(OUT_C);Wait(1);Off(OUT_A+OUT_C);//左回転
#define RIGHT_X OnFwd(OUT_C);OnRev(OUT_A);Wait(1);Off(OUT_A+OUT_C);//右回転
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
int light_max = 0; //「見つけた明るさ」の最大値
int i = 0;
int MAX = 0; //最も明るかった地点の番号
for(i=0; i<=MEGANE; i++){
LEFT_X; //まず左に一周しつつ
if(SENSOR_2>light_max){ //このlight_maxを
light_max = SENSOR_2; //見つけた中で、一番明るい
MAX = i; //明るさの値に塗り変える。
}
}
LEFT_X; //まず左に一周しつつ
if(SENSOR_2>light_max){ //このlight_maxを
light_max = SENSOR_2; //見つけた中で、一番明るい
} //明るさの値に塗り変える。
}
Off(OUT_A+OUT_C); //とりあえず一周したら
Wait(50); //休憩してみる(確認の目的あり)
repeat(10){ //上で見つけた明るさを元に
for(i=0; i<=MEGANE; i++){ //右回転で探しては前進、探しては前進
if(light_max-10>=SENSOR_2){ //最も明るい所よりも若干、暗くても進ませます。
RIGHT_X;
if(light_max-10>=SENSOR_2){
RIGHT_X;
}
else{
OnFwd(OUT_A+OUT_C);
Wait(20);
Off(OUT_A+OUT_C);
}
else{
Off(OUT_A+OUT_C);Wait(10); //最も明るい所よりも若干、暗くても進ませます。
OnFwd(OUT_A+OUT_C);
Wait(30);
Float(OUT_A+OUT_C);
Wait(50);
}
}
}
}
**作成者 [#f9654d49]
キャベツ 富岡 トマト
**ロボの話 [#r09a8a67]
今までのロボ達の「バランスの悪さ」と戦ううち、培われた技術。
部品の組合せや特にコレといった工夫もないように見えるであろう、今回のロボ。
...個人的には今回のコンセプト「シンプルイズザベスト」にのっとり、
シンプルさの中に秘められた、安定性、を見せつける。
走ってるうちに壊れなければ良い
......と思って組み立てた時には、まさか、
とーますに軽く分解されるとは、思いもしなかったキャベツとトマトなのでした。
「光」、もとい「懐中電灯の光」を取りやすくするため光センサーを上の方に、
取り付けた。懐中電灯を持つ人が少しでも動きやすいようにとの配慮である。
**プログラムの話 [#xbb72a6d]
今回も、お手本を参考にしつつ。
自分なりの理解をしてプログラムを作成。(理解するのに時間がかかり過ぎ...)
自分なりの理解をしてプログラムを作成。(理解するのに時間がかかり過ぎました...)
プログラムとしては、
1.ロボットが一周する事を、おそらく75分割
1.ロボットが左回転で一周以上する、事を「100分割」
2.分割した事で、明るい方向を(MAX)番号として記憶
3.その番号の地点まで回転
3.その番号の地点まで右回転
4.明るい方を向いたら、少し前進
5.1に戻って繰り返し
というような形で考えてみた。
...が、ロボが全く同じ回転を繰り返す事が前提となっている事や、
一周が75等分では、おおざっぱ過ぎたかも...。
ついでに言うと、携帯電話のライトで試したのみで、
懐中電灯では、まだ試していない...。
5.3に戻って繰り返し
という形で考えてみた。
**感想など [#mc707c26]