小回りが利くように、ロボットの組み方を工夫した。具体的には、
交差点を渡るという動作に重点をおいて攻略した。
#define BLACK1 35 #define BLACK2 40 #define WHITE1 50 #define WHITE2 60 #define SPEED1 75 #define SPEED2 25 #define SPEED3 20 #define go_forward OnFwd(OUT_BC,SPEED1); //直進 #define turn_left0 OnFwd(OUT_C,SPEED2); Float(OUT_B); //左折 #define turn_left1 OnFwd(OUT_C,SPEED2); OnRev(OUT_B,SPEED3); //左旋回(B:右モータ) #define turn_right0 Float(OUT_C); OnFwd(OUT_B,SPEED2); //右折 #define turn_right1 OnRev(OUT_C,SPEED2);OnFwd(OUT_B,SPEED2); //右旋回(C:左モータ) #define STEP 1 #define nMAX 180 //調整箇所 #define short_break Off(OUT_BC);Wait(1000); #define CROSS_TIME 160 //交差点通過時間(調整箇所) #define cross_line OnFwd(OUT_BC,SPEED1); Wait(CROSS_TIME);short_break; //交差点通過 task main() { SetSensorLight(S3); int nOnline=0; //続けて黒になった回数 while (true) { while (nOnline < nMAX) { if (SENSOR_3 < BLACK1) { turn_right1; nOnline++; } else { if (SENSOR_3 < BLACK2) { turn_right0; } else if (SENSOR_3 < WHITE1) { go_forward; } else if (SENSOR_3 < WHITE2) { turn_left0; } else { turn_left1; } nOnline=0; } Wait(STEP); } short_break; turn_left1; Wait(nMAX*STEP); cross_line; nOnline=0; } }
当日は体調不良のため、参加出来なかった。時間が足りず缶をつかむプログラムを組み込むことが出来なかった。