** 光を追いかけるロボット [#rc8e8a2f] &size(10){まず最初に一回転してもっとも明るい方向(懐中電灯の方向)を探し、次に懐中電灯の光を追いかけて進むようなロボットを作成しなさい。}; &size(10){プログラミング担当⇒⇒}; ~ &size(10){組み立て担当⇒⇒}; Programed by 体調 ~ int max; int time; task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); max = SENSOR_2; ClearTimer(0); time = Timer(0); while(Timer(0) <= 44) { OnFwd(OUT_A); OnRev(OUT_C); if(SENSOR_2 > max) { ClearTimer(1); max = SENSOR_2 ; } else { max = max; time = Timer(1); } } ClearTimer(1); while(Timer(1) <= time) { OnFwd(OUT_C); OnRev(OUT_A); } OnFwd(OUT_A); while(true) { OnFwd(OUT_A+OUT_C); if(SENSOR_2 < max - 3) { Off(OUT_C); ClearTimer(2); until((SENSOR_2 >= max - 3) || (Timer(2) == 4)); if(SENSOR_2 < max - 3) { Off(OUT_A); OnFwd(OUT_C); until(SENSOR_2 >= max - 3); OnFwd(OUT_A); } } } } このプログラムはRCXが一回転した後もっとも明るかった方向に逆回りで戻り、その光を追いかけるプログラムです。 回転する間、RCXの動きには変化はありませんが、光センサーの値がそれまでの最大値より大きければタイマー1をクリアーするようになっています。そして、一回転し終わったら、そのタイマー1の値だけ戻ります。その後は、その光の方向へ進み、感知した光の最大値より暗くなれば首を振り、その光を探します。 Written by 体調