#define OPEN 1
 #define GO 2
 #define PUT 3
 #define BACK 4
 #define THERESHOLD 47
 #define HIGHESTPOWER 7
 #define HIPOWER 1
 #define LOWPOWER 0
 #define set_power_HE SetPower(OUT_AC,HIGHESTPOWER);
 #define set_power_H SetPower(OUT_AC,HIPOWER);
 #define set_power_L SetPower(OUT_AC,LOWPOWER);
 #define go_forward set_power_H; OnFwd(OUT_AC);
 #define turn_left1 set_power_L;\
   OnFwd(OUT_C); OnRev(OUT_A);
 #define turn_left0 set_power_L;\
   OnFwd(OUT_C); Off(OUT_A);
 #define turn_right0 set_power_L;\
   OnFwd(OUT_A); Off(OUT_C);
 #define turn_right1 set_power_L;\
   OnFwd(OUT_A); OnRev(OUT_C);
 #define STEP 1
 #define nMAX 35
 #define short_break Off(OUT_AC); Wait(100);
 #define cross_line go_forward set_power_H;\
   OnFwd(OUT_AC); Wait(20); short_break; 
 
 
 task main()
 {
   SetSensor(SENSOR_1,SENSOR_LIGHT);
   SetSensor(SENSOR_3,SENSOR_LIGHT);
   int nOnline=0;
 
 
     go_forward;
 
     if (SENSOR_3 > 48) {
     SendMessage(OPEN);
     Off(OUT_AC);
    }
 
   ClearTimer(0);
 
   until (Message() == BACK);
     OnRev(OUT_AC);
     Wait(100);
 
 
   until (Message() == GO);
 
   while (true) {
     while (FastTimer(0) < nMAX) {
       if (SENSOR_1 < THERESHOLD -4) {
       turn_right1;
       } else {
         if (SENSOR_1 < THERESHOLD -2) {
           turn_right0;
       } else if (SENSOR_1 < THERESHOLD +2) {
           go_forward;
       } else if (SENSOR_1 < THERESHOLD +4) {
           turn_left0;
       } else {
           turn_left1;
        }
      if (SENSOR_3 > 48) {
     SendMessage(OPEN);
     Off(OUT_AC);
     }
       ClearTimer(0);
      }
     Wait(STEP);
     }
     turn_left1; Wait(nMAX*STEP);
     cross_line;
     nOnline++;
     PlaySound(SOUND_CLICK);
     ClearTimer(0);
     if (nOnline == 8) {
       OnFwd(OUT_A);
       OnRev(OUT_C);
       Wait(Z);
       SendMessage(PUT);
        }
     }
     ClearTimer(0);
    
 }

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS