[[2006a/B1/ロボコン]] #define go_straight OnFwd(OUT_A+OUT_C); //直進する定義です #define turn_right OnFwd(OUT_A);OnRev(OUT_C); //右に旋回する定義です #define turn_left OnFwd(OUT_C);OnRev(OUT_A); //左に旋回する定義です #define go_back OnRev(OUT_A+OUT_C); //後進する定義です #define no Off(OUT_A+OUT_C); //モーター停止する定義です #define THRESHOLD 40 //線の上にのっているという定義です #define abc (SENSOR_1< 42)&&(SENSOR_3<42) //二つのセンサーが線をまたぐという定義です #define scr1 (SENSOR_1< 44) //右側のセンサーが線の上にあるという定義です #define scr2 (SENSOR_3< 44) //左側のセンサーが線の上にあるという定義です task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); //光センサーのセットアップ SetSensor(SENSOR_3, SENSOR_LIGHT); SetPower(OUT_A,10); //モーターのギア比を定めます SetPower(OUT_B,10); SetPower(OUT_C,10); OnRev(OUT_B); //ここは演出で、アームを出し入れします。演出なので、競技自体に影響はありません Wait(30); Off(OUT_B); Wait(15); OnFwd(OUT_B); Wait(15); Off(OUT_B); Wait(10); OnRev(OUT_B); Wait(15); //アーム出し入れの演出終了 go_straight //まず、1本の黒線を無視して通り過ぎるよう、時間を計算して直進させます Wait(200); until (abc); //2本目の黒線をまたぐまで前進します go_straight //またいだあと、調整のため、少し前進します Wait(30); turn_right Wait(90); turn_right //右に旋回 Wait(90); //90度旋回する時間です go_straight Wait(180); until (abc); go_straight Wait(78); turn_right Wait(90); go_straight Wait(200); no Wait(30); go_back Wait(140); until (abc); go_back Wait(35); Off(15); turn_left Wait(140); go_back Wait(175); until (abc); go_back Wait(84); turn_left Wait(124); go_back Wait(450); turn_left Wait(10); go_back Wait(240); until (abc); go_back Wait(20); turn_left Wait(130); go_back Wait(150); until (abc); go_back Wait(50); turn_right Wait(130); go_straight Wait(400); OnFwd(OUT_B); Wait(400); no Off(OUT_B); }