[[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);
 }

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS