- 追加された行はこの色です。
- 削除された行はこの色です。
[[2009b/A2/ロボコン]]
***最初 [#r9b26a7a]
#define Bright 45
#define GOFWD(t) OnRev(OUT_A+OUT_C); Wait(t);
#define Stop Off(OUT_A+OUT_C);
#define GOREV OnFwd(OUT_A+OUT_C);
task main ()
{
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_1,SENSOR_ROTATION);
while(SENSOR_2 > Bright){
GOFWD(10);
}
Wait(10);
while(SENSOR_2>Bright){
OnRev(OUT_C);
Off(OUT_A);
}
PlaySound(SOUND_DOUBLE_BEEP) ;
ClearSensor(SENSOR_1);
while (abs(SENSOR_1)< 60) {
if (SENSOR_2 < Bright) { // 醇M醇`醇S潤ッ醇Q„遵ャ…遵ャ¢遵ャ遵ー遵ャ∆遵ャ´
OnRev(OUT_A);
Off(OUT_C);
Wait(20);
}
else { // 醇M醇`醇S潤ッ遵ャ潤・・遵沛・O遵ャ遵ス遵ャΩ遵ャ∆遵ャ´
Off(OUT_A);
OnRev(OUT_C);
Wait(20);
}
}
Stop;
ClearSensor(SENSOR_1);
OnRev(OUT_B);
//start arm;
/*while(abs(SENSOR_1)<5){
OnRev(OUT_C);
Float(OUT_A);
Wait(40);
OnFwd(OUT_A);
Wait(5);
}*/
ClearTimer(0);
while(FastTimer(0)<150){
OnRev(OUT_A);
Float(OUT_C);
Wait(60);
OnFwd(OUT_C);
Wait(20);
}
Stop;
PlaySound(SOUND_DOUBLE_BEEP) ;
while(abs(SENSOR_1)<40){
GOFWD(10);
}
Stop;
Wait(100);
//stop arm;
PlaySound(SOUND_FAST_UP) ;
ClearSensor(SENSOR_1);
/*while(SENSOR_3<Bright){
GOREV;
}*/
while(abs(SENSOR_1)<40){
GOREV;
}
Stop;
Off(OUT_B);
/*ClearTimer(0);
while(FastTimer(0)<150){
OnFwd(OUT_A);
Float(OUT_C);
Wait(40);
OnRev(OUT_C);
Wait(5);
}
Stop;*/
while(SENSOR_2>Bright){
OnFwd(OUT_C);
OnRev(OUT_A);
}
/*while(SENSOR_3>Bright){
GOREV;
}*/
PlaySound(SOUND_FAST_UP) ;
Stop;
ClearTimer(0);
ClearSensor(SENSOR_1);
while (FastTimer(0)<500) {
if (SENSOR_3 < Bright) { // 醇M醇`醇S潤ッ醇Q„遵ャ…遵ャ¢遵ャ遵ー遵ャ∆遵ャ´
OnFwd(OUT_C);
Off(OUT_A);
}
else { // 醇M醇`醇S潤ッ遵ャ潤・・遵沛・O遵ャ遵ス遵ャΩ遵ャ∆遵ャ´
Off(OUT_C);
OnFwd(OUT_A);
}
}
Stop;
ClearSensor(SENSOR_1);
while(abs(SENSOR_1)<=20){
OnFwd(OUT_C);
Float(OUT_A);
Wait(20);
OnRev(OUT_A);
}
ClearTimer(0);
while(FastTimer(0)<500){
OnFwd(OUT_A+OUT_C);
}
/*ClearSensor(SENSOR_1);
while(abs(SENSOR_1)<=180){
OnFwd(OUT_A+OUT_C);
}
Stop;*/
/*ClearSensor(SENSOR_1);
while(abs(SENSOR_1)<=90){
OnFwd(OUT_A);
Float(OUT_C);
Wait(40);
OnRev(OUT_C);
Wait(40);
}
Stop;*/
/*while((SENSOR_3>Bright) || (SENSOR_2>Bright)){
if(SENSOR_3<Bright){
OnRev(OUT_C);
Off(OUT_A);
}else if(SNESOR_2<Bright){
OnRev(OUT_A);
Off(OUT_C);
}else{
GOFWD(10);
}
}
GOREV(300);*/
//ClearSensor(SENSOR_1);
/*while(SENSOR_2 < Bright){
OnRev(OUT_A);
Float(OUT_C);
}*/
while(SENSOR_2<Bright){
OnRev(OUT_A+OUT_C);
}
ClearTimer(0);
ClearSensor(SENSOR_1);
while (abs(SENSOR_1)<=450) {
if (SENSOR_2 < Bright) { // 醇M醇`醇S潤ッ醇Q„遵ャ…遵ャ¢遵ャ遵ー遵ャ∆遵ャ´
OnRev(OUT_A);
Off(OUT_C);
}
else { // 醇M醇`醇S潤ッ遵ャ潤・・遵沛・O遵ャ遵ス遵ャΩ遵ャ∆遵ャ´
Off(OUT_A);
OnRev(OUT_C);
}
}
Stop;
}
/*task arm(){
while(true){
OnFwd(OUT_B);
}
Off(OUT_B);
}*/
***二個目 [#zc64409d]
#define FWD_AC OnFwd(OUT_A+OUT_C);
#define FWD_A OnFwd(OUT_A);
#define FWD_C OnFwd(OUT_C);
#define REV_AC OnRev(OUT_A+OUT_C);
#define REV_A OnRev(OUT_A);
#define REV_C OnRev(OUT_C);
#define OFF_AC Off(OUT_A+OUT_C);
#define OFF_A Off(OUT_A);
#define OFF_C Off(OUT_C);
#define FLOAT_AC Float(OUT_A+OUT_C);
#define FLOAT_A Float(OUT_A);
#define FLOAT_C Float(OUT_C);
#define THRESHOLD 45
#define ARM_OPEN OnFwd(OUT_B);
#define ARM_CLOSE OnRev(OUT_B);
#define ARM_STOP Off(OUT_B);
task main(){
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_ROTATION);
SetSensor(SENSOR_3,SENSOR_LIGHT);
Wait(3000);
ClearSensor(SENSOR_2);
while(abs(SENSOR_2)<=21){
FWD_AC;
}
while(abs(SENSOR_2)<=45){
line_trace();
}
45r();
OFF_AC;
Wait(100);
/*while((SENSOR_1>THRESHOLD) || (SENSOR_3>THRESHOLD)){
if(SENSOR_1>THRESHOLD){
REV_C;OFF_A;
}else if(SENSOR_3>THRESHOLD){
REV_A;OFF_C;
}else{
REV_AC;
}
}
OFF_AC;
ARM_CLOSE;
Wait(25);
ARM_STOP;*/
ClearSensor(SENSOR_2);
while(abs(SENSOR_2)<25){
FWD_AC;
}
OFF_AC;
Wait(100);
ARM_CLOSE;
Wait(50);
ARM_STOP;
ClearSensor(SENSOR_2);
/*while(abs(SENSOR_2)<25){
REV_AC;
}*/
while(abs(SENSOR_2)<24){
REV_AC;
}
OFF_AC;
Wait(100);
ClearSensor(SENSOR_2);
ClearTimer(0);
while(SENSOR_1>THRESHOLD) {
FWD_C;REV_A;
}
ClearSensor(SENSOR_2);
while(SENSOR_3>THRESHOLD){
line_trace1();
}
ClearSensor(SENSOR_2);
while(abs(SENSOR_2)<=15){
FWD_A;REV_C;
}
ClearSensor(SENSOR_2);
while(abs(SENSOR_2)<30){
line_trace1();
}
ClearSensor(SENSOR_2);
while(abs(SENSOR_2)<5){
FWD_C;REV_A;
}
OFF_AC;
Wait(10);
FWD_AC;
Wait(300);
OFF_AC;
ARM_OPEN;Wait(30);
ARM_STOP;
while((SENSOR_1>THRESHOLD) || (SENSOR_3>THRESHOLD)){
REV_AC;
}
ClearSensor(SENSOR_2);
while(abs(SENSOR_2)<=5){
FWD_C;REV_A;
}
while(SENSOR_1>THRESHOLD){
line_trace3();
}
while(abs(SENSOR_2)<=5){
FWD_C;REV_A;
}
ClearSensor(SENSOR_2);
while(abs(SENSOR_2)<200){
line_trace3();
}
OFF_AC;
/*while((SENSOR_1>THRESHOLD) || (SENSOR_3>THRESHOLD)){
line_trace();
}
while(SENSOR_1<THRESHOLD){
FWD_A;REV_C;
}
ClearSensor(SENSOR_2);
while(abs(SENSOR_2)<=15){
line_trace();
}
ClearSensor(SENSOR_2);
while(abs(SENSOR_2)<=5){
FWD_C;REV_A;
}
FWD_AC;Wait(300);
OFF_AC;
/*ARM_OPEN;
Wait(25);
ARM_STOP;
while((SENSOR_1>THRESHOLD) ||(SENSOR_3>THRESHOLD)){
REV_AC;
}
while(abs(SENSOR_2)<5){
FWD_C;REV_A;
}
while(SENSOR_1)*/
}
sub line_trace(){
if(SENSOR_1<THRESHOLD){
FWD_C;REV_A;
}else if(SENSOR_3<THRESHOLD){
FWD_A;REV_C;
}else {
FWD_AC;
}
}
sub line_trace1(){
if(SENSOR_1<THRESHOLD){
FWD_A;OFF_C;
}else{
FWD_C;OFF_A;
}
}
sub line_trace3(){
if(SENSOR_3<THRESHOLD){
FWD_C;OFF_A;
}else{
FWD_A;OFF_C;
}
}
sub 45r(){
ClearSensor(SENSOR_2);
while(abs(SENSOR_2)<5){
FWD_A;REV_C;
}
}
sub 45l(){
ClearSensor(SENSOR_2);
while(abs(SENSOR_2)<5){
FWD_C;REV_A;
}
}