2018a/Member

2018a/Member

#define set_power_low SetPower(OUT_A,3);SetPower(OUT_B,1);SetPower(OUT_C,3);

#define BLACK 40

#define WHITE 50

#define go_f set_power_low; OnFwd(OUT_AC);

#define turn_left set_power_low; Off(OUT_A); OnFwd(OUT_C);

#define turn_right set_power_low; OnFwd(OUT_A); Off(OUT_C);

task main() {

   SetSensor(SENSOR_2, SENSOR_LIGHT);
   ClearTimer(0);
   while(FastTimer(0)<=20) {
       if (SENSOR_2 < BLACK){
           turn_left;
       } else if (SENSOR_2 < WHITE){
           go_f;
           ClearTimer(0);
       } else {
          turn_right;
          ClearTimer(0);
        }
   }
   Off(OUT_AC);Wait(100); set_power_low; OnRev(OUT_C); Wait(20);
   go_f; Wait(40);
    SetSensor(SENSOR_2, SENSOR_LIGHT);
   ClearTimer(0);
   while(FastTimer(0)<=25) {
       if (SENSOR_2 < BLACK){
           turn_left;
       } else if (SENSOR_2 < WHITE){
           go_f;
           ClearTimer(0);
       } else {
          OnRev(OUT_C);OnFwd(OUT_A);
          ClearTimer(0);
        }
   }
 Off(OUT_AC);Wait(100);go_f; Wait(30);set_power_low; 
 OnRev(OUT_A);Wait(50);OnFwd(OUT_C);Wait(50);go_f; Wait(40);
 Off(OUT_AC);Wait(100);OnFwd(OUT_AC);Wait(30);
 set_power_low; OnRev(OUT_B);Wait(100);Off(OUT_AC);Wait(500);
 OnRev(OUT_A);Wait(50);OnFwd(OUT_C);Wait(50);
  SetSensor(SENSOR_2, SENSOR_LIGHT);
   ClearTimer(0);
   
    while(FastTimer(0)<=20) {
       if (SENSOR_2 < BLACK){
           turn_left;
       } else if (SENSOR_2 < WHITE){
           go_f;
           ClearTimer(0);
       } else {
          OnRev(OUT_C);OnFwd(OUT_A);
          ClearTimer(0);
        }
   } 
 set_power_low; OnRev(OUT_C); Wait(20);
   go_f; Wait(20);
 SetSensor(SENSOR_2, SENSOR_LIGHT);
   ClearTimer(0);
   
    while(FastTimer(0)<=20) {
       if (SENSOR_2 < BLACK){
           turn_left;
       } else if (SENSOR_2 < WHITE){
           go_f;
           ClearTimer(0);
       } else {
          OnRev(OUT_C);OnFwd(OUT_A);
          ClearTimer(0);
        }
   } 
 Off(OUT_AC);Wait(100);go_f; Wait(30);set_power_low; 
 OnRev(OUT_A);Wait(55);OnFwd(OUT_C);Wait(55);
 SetSensor(SENSOR_2, SENSOR_LIGHT);
   ClearTimer(0);
   
    while(FastTimer(0)<=20) {
       if (SENSOR_2 < BLACK){
           turn_left;
       } else if (SENSOR_2 < WHITE){
           go_f;
           ClearTimer(0);
       } else {
          OnRev(OUT_C);OnFwd(OUT_A);
          ClearTimer(0);
        }
   } 
 Off(OUT_AC);Wait(100);go_f; Wait(30);set_power_low; 
 OnRev(OUT_A);Wait(55);OnFwd(OUT_C);Wait(55);
   SetSensor(SENSOR_2, SENSOR_LIGHT);
   ClearTimer(0);
   
    while(FastTimer(0)<=20) {
       if (SENSOR_2 < BLACK){
           turn_left;
           ClearTimer(0);
       } else if (SENSOR_2 < WHITE){
           go_f;
           ClearTimer(0);
       } else {
          OnRev(OUT_C);OnFwd(OUT_A);
        }
   } 
OnRev(OUT_C);Wait(55);OnFwd(OUT_A);Wait(55);
   SetSensor(SENSOR_2, SENSOR_LIGHT);
   ClearTimer(0);
   
    while(FastTimer(0)<=20) {
       if (SENSOR_2 < BLACK){
           turn_left;
           ClearTimer(0);
       } else if (SENSOR_2 < WHITE){
           go_f;
           ClearTimer(0);
       } else {
          OnRev(OUT_C);OnFwd(OUT_A);
        }
   } 
Off(OUT_AC);Wait(100); set_power_low; OnRev(OUT_C); Wait(20);
 OnRev(OUT_C);Wait(50);OnFwd(OUT_A);Wait(50);
   SetSensor(SENSOR_2, SENSOR_LIGHT);
   ClearTimer(0);
   
    while(FastTimer(0)<=20) {
       if (SENSOR_2 < BLACK){
           turn_left;
           ClearTimer(0);
       } else if (SENSOR_2 < WHITE){
           go_f;
           ClearTimer(0);
       } else {
          OnRev(OUT_C);OnFwd(OUT_A);
        }
   } 

Off(OUT_AC);Wait(100); set_power_low; OnRev(OUT_C); Wait(20); OnRev(OUT_C);Wait(40);OnFwd(OUT_A);Wait(40); go_f; Wait(20);

repeat(2){

  SetSensor(SENSOR_2, SENSOR_LIGHT);
   ClearTimer(0);
   
    while(FastTimer(0)<=20) {
       if (SENSOR_2 < BLACK){
           turn_left;
           ClearTimer(0);
       } else if (SENSOR_2 < WHITE){
           go_f;
           ClearTimer(0);
       } else {
          OnRev(OUT_C);OnFwd(OUT_A);
        }
   } 

set_power_low; OnRev(OUT_C); Wait(20);

   go_f; Wait(20);

}

 SetSensor(SENSOR_2, SENSOR_LIGHT);
   ClearTimer(0);
   
    while(FastTimer(0)<=20) {
       if (SENSOR_2 < BLACK){
           turn_left;
           ClearTimer(0);
       } else if (SENSOR_2 < WHITE){
           go_f;
           ClearTimer(0);
       } else {
          OnRev(OUT_C);OnFwd(OUT_A);
        }
   } 

Off(OUT_AC);Wait(100); set_power_low; OnRev(OUT_C); Wait(20);OnRev(OUT_C);Wait(55);OnFwd(OUT_A);Wait(55); go_f; Wait(30);set_power_low; OnFwd(OUT_B);Wait(100);Off(OUT_AC);Wait(500); set_power_low; OnRev(OUT_C); Wait(30);OnRev(OUT_A);Wait(30); OnRev(OUT_C);Wait(100);OnFwd(OUT_A);Wait(100);

SetSensor(SENSOR_2, SENSOR_LIGHT);

   ClearTimer(0);
   
    while(FastTimer(0)<=20) {
       if (SENSOR_2 < BLACK){
           turn_left;
           ClearTimer(0);
       } else if (SENSOR_2 < WHITE){
           go_f;
           ClearTimer(0);
       } else {
          OnRev(OUT_C);OnFwd(OUT_A);
        }
   } 

Off(OUT_AC);Wait(100);set_power_low;

 OnRev(OUT_A);Wait(45);OnFwd(OUT_C);Wait(45);

SetSensor(SENSOR_2, SENSOR_LIGHT);

   ClearTimer(0);
   
    while(FastTimer(0)<=20) {
       if (SENSOR_2 < BLACK){
           turn_left;
           ClearTimer(0);
       } else if (SENSOR_2 < WHITE){
           go_f;
           ClearTimer(0);
       } else {
          OnRev(OUT_C);OnFwd(OUT_A);
        }
   } 

set_power_low; OnRev(OUT_C); Wait(20);

   go_f; Wait(70);

Off(OUT_AC);Wait(100000);

}

机上では書けても、実際はうまく行かないことが多かった。 すべてのライントレースを一つのプログラムで行った。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-07-20 (金) 16:55:03 (393d)