キャタピラのロボットに光センサを2つつけたもの。センサは真正面を向くのではなく、少しずつ左右に開いていて、どちらが懐中電灯を捉えているかを割り出しやすくしてある。
#define torch 30 //懐中電灯基準値 int light_l; int light_r; task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //左光センサ SetSensor(SENSOR_3,SENSOR_LIGHT); //右光センサ while (true) { if ((SENSOR_1 < torch)&&(SENSOR_3 < torch)) { //懐中電灯を見失ったとき if (light_l > light_r) { //light_lが大→懐中電灯は左 OnFwd(OUT_C); OnRev(OUT_A); //左回転 } else { //light_rが大→懐中電灯は右 OnFwd(OUT_A); OnRev(OUT_C); //右回転 } } else { //懐中電灯を捉えているとき OnFwd(OUT_A+OUT_C); //前進 light_l = SENSOR_1; //light_lに左センサの値を代入 light_r = SENSOR_3; //light_rに右センサの値を代入 } } }
左右どちらかのセンサが懐中電灯を捉えていれば前進する。前進中は、左右のセンサの値を変数light_l・light_rとして保存しており、懐中電灯を見失ったときに両者を比較し、どちらのセンサが懐中電灯を捉えていたのか判別する。それによって懐中電灯が逃げた方向へと回転するようにして、無駄なく懐中電灯を追うことができるようになっている。