作成者:中央線・西日暮里
#define turn_right OnFwd(OUT_A);OnRev(OUT_C); //右回りを定義 #define turn_left OnRev(OUT_A);OnFwd(OUT_C); //左回りを定義 #define Stop_turning Off(OUT_A+OUT_C); //旋回の停止を定義 #define TURN_TIME 50 //旋回時間を0,5秒に設定 #define go_straight OnFwd(OUT_A+OUT_C);Wait(50);Off(OUT_A+ OUT_C);Wait(50); //直進を定義 task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー2は光センサー int light_max=0,time_max=0; //光の最大値を0、最大値を観測した時間を0とおく while(true){ turn_left;Wait(25);Off(OUT_A+OUT_C);Wait(10); //0,25秒左回り、0,1秒待つ(ロボットが激しく動くのを防止するため) turn_right; //右に回る ClearTimer(0); while(FastTimer(0)<TURN_TIME){ if(SENSOR_2>light_max){ //センサー2の値が光の最大値より大きかったら light_max=SENSOR_2; //光の最大値をセンサー2の値に置き換え time_max=FastTimer(0); } } Stop_turning;Wait(100); //旋回停止、一秒待つ turn_left; //左回り Wait(TURN_TIME-time_max); //回った時間−最大値を観測した時間 Stop_turning; //旋回停止 go_straight; //直進 light_max=0; //光の最大値を0と置く time_max=0; //最大値を観測した時間を0と置く } }