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);  //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
Last-modified: 2006-08-14 (月) 10:51:30