[[2017a/Member]]
#contents
*課題について [#i4ad9c50]
決められたレールの上をライントレースして走るロボットの作成である。光センサーを利用してレールの閾値を読み取りながら進む。

#define TM 18 
#define TR1 OnFwd(OUT_A);OnRev(OUT_C);
#define TR0 OnFwd(OUT_A);Off(OUT_C);
#define TL0 OnFwd(OUT_C);Off(OUT_A);
#define TL1  OnFwd(OUT_C);OnRev(OUT_A);
#define stop(t) Off(OUT_AC);Wait(t);
#define sound_up PlaySound(SOUND_UP);
#define line_trase while(FastTimer(0)<tmax){if(SENSOR_2 >senter +13){TR1;ClearTimer(0);}else if(SENSOR_2 >senter +7){TL0;ClearTimer(0);}\
        else if(SENSOR_2 >senter +0){OnFwd(OUT_AC);ClearTimer(0);}else if(SENSOR_2 >senter -2){TL; ClearTimer(0);}\
        else{SetPower(OUT_C,0);TL1;}if(FastTimer(0)>tmax){ClearTimer(0);}}n++;SetPower(OUT_C,7);
#define line_trase_curve while(FastTimer(0)<tmid){if(SENSOR_2 >senter +13){TR1;ClearTimer(0);}else if(SENSOR_2 >senter +7){right;ClearTimer(0);}\
        else if(SENSOR_2 >senter +0){OnFwd(OUT_AC);ClearTimer(0);}else if(SENSOR_2 >senter -1){left; ClearTimer(0);}\
        else{TL1;}if(FastTimer(0)>tmid){ClearTimer(0);}}n++;
sub line_A()
 {
   ClearTimer(0);
   line_trase;
   if((n==1)||(n==4)||(n==5)||(n==11)){
     sound_up;
    } 
   Off(OUT_AC);
 }
 sub line_B()
 {
   ClearTimer(0);
   line_trase_curve;
   if((n==2)||(n==9)||(n==12)){
     sound_up;
     stop(100);
    }
  Off(OUT_AC);
 }
 sub line_C()
 {
  ClearTimer(0);
  line_trase;
  if((n==7)||(n==8)){
    sound_up;
    stop(100);
    TR1;Wait(45);
    OnFwd(OUT_AC);Wait(20);
   }
  Off(OUT_AC);
 }
 
 sub line_D()
 {
   ClearTimer(0);
   line_trase_curve;
   if(n==6){
     sound_up;
    } 
   Off(OUT_AC);
 }
 
 sub line_E()
 {
  ClearTimer(0);
  line_trase;
  if(n==13){
   sound_up;
  }
  Off(OUT_AC);
 }
 task main()
 {
  SetSensor(SENSOR_2, SENSOR_LIGHT);
  line_A();
  line_B();
  line_C();
  line_A();
  line_A();
  line_A();
  line_D();
  line_D();
  line_B();
  line_C();
  line_A();
  line_B();
  line_E();
 }

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