[[2012a/Member]]
*課題2 ライントレース [#re0618f5]

*ロボット本体 [#w1998edb]

#ref(2012a/A4/SanChan/M2/201206151616091.jpg,100%,ロボット)
#ref(2012a/A4/SanChan/M2/20120615161647.jpg,100%,ロボット)
#ref(2012a/A4/SanChan/M2/20120615161709.jpg,100%,ロボット)

*プログラミング [#u2f2daa1]
 #define THRESHOLD 52
 #define THRESHOLD_K 32
 #define THRESHOLD_W 65

 task main()
 {
      SetSensorLight(IN_1);
      long t0,time;
      t0=CurrentTick();

       int mode=1
 while(1){
      switch(mode)  //ラインをトレースするプログラミング
       {
      case 1:     
       time=CurrentTick()-t0;
		if(THRESHOLD+5>SENSOR_1&&SENSOR_1>THRESHOLD-5)
                      {
			Float(OUT_AC);
			OnFwd(OUT_A,40);
			OnFwd(OUT_C,40);
			Wait(5);
			}
		if(THRESHOLD_K<SENSOR_1&&SENSOR_1<THRESHOLD_K+10)
                      {
			Float(OUT_AC);
                        OnFwd(OUT_A,40);
			OnFwd(OUT_C,10);
			Wait(5);
			}
           if(THRESHOLD_W-10<SENSOR_1&&SENSOR_1<THRESHOLD_W)
                      {
			Float(OUT_AC);
                        OnFwd(OUT_A,10);
			OnFwd(OUT_C,40);
			Wait(5);
			}
	       if(SENSOR_1<THRESHOLD_K)
                      {
			Float(OUT_AC);
                        OnFwd(OUT_A,40);
			OnFwd(OUT_C,40);
			Wait(5);
			}
           if(SENSOR_1>THRESHOLD_W)
                      {
			Float(OUT_AC);
                        OnRev(OUT_A,40);
			OnFwd(OUT_C,40);
			Wait(5);
			}
               
        }
      if(time>21000)
        {
      mode=2;
        }
 break;
      case 2://交差点を通過するプログラミング
        {
      time=CurrentTick()-t0;
		if(THRESHOLD+5>SENSOR_1&&SENSOR_1>THRESHOLD-5)
                      {
			Float(OUT_AC);
			OnFwd(OUT_A,40);
			OnFwd(OUT_C,40);
			Wait(5);
			}
		if(THRESHOLD_K<SENSOR_1&&SENSOR_1<THRESHOLD_K+10)
                      {
			Float(OUT_AC);
                        OnFwd(OUT_A,40);
			OnFwd(OUT_C,10);
			Wait(5);
			}
           if(THRESHOLD_W-10<SENSOR_1&&SENSOR_1<THRESHOLD_W)
                      {
			Float(OUT_AC);
                        OnFwd(OUT_A,10);
			OnFwd(OUT_C,40);
			Wait(5);
			}
	      if(SENSOR_1<THRESHOLD_K)
                      {
			Float(OUT_AC);
                        OnFwd(OUT_A,40);
                        OnRev(OUT_C,40);
			Wait(5);
			}
           if(SENSOR_1>THRESHOLD_W)
                      {
			Float(OUT_AC);
                        OnFwd(OUT_A,40);
			OnRev(OUT_C,30);
			Wait(5);
			}     
        }
      while(21000<time&&time<23000);
      Off(OUT_AC);
  }
 }

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