[[2006a/B5]]
*タッチセンサを使ったロボット [#j784ca95]
**壁の間を行き帰り [#p6e8fb36]

 作成:坂本達也 
  task main()
  { 
   SetSensor(SENSOR_1,SENSOR_TOUCH);
   SetSensor(SENSOR_3,SENSOR_TOUCH);
   
   While(true)//この後の動作を延々繰り返す
   {OnFwd(0UT_A+OUT_C);
   until((SENSOR_1==1)||(SENSOR_3==1));//両方のセンサーが壁に当たったら
   Off(OUT_A+OUT_C);//停止          
   Rev(OUT_A+OUT_C);//後退
   Wait(100);
   Fwd(OUT_A)+Rev(OUT_C);//反転した後、前進(最初のプログラムに戻る)
   Wait(360);}
    }

*光センサーを使ったロボット [#o70c99e7]
**黒い線に沿って動くロボット [#f3cea957]

 #define THRESHOLD 40
 task main()
 {
  SetSensor(SENSOR_1,SENSOR_LIGHT);
  SetSensor(SENSOR_3,SENSOR_LIGHT);
 
  while(true)
  {
    If((SENSOR_1> THRESHOLD)&&(SENSOR_3> THRESHOLD)) 
   {
         OnFwd(OUT_A+OUT_C);
    } 
    If(SENSOR_1< THRESHOLD)
   { 
     OnFwd(OUT_C);
     until(SENSOR_1> THRESHOLD);
    }
   If(SENSOR_3< THRESHOLD)
   {
     OnFwd(OUT_A);
     until(SENSOR_3> THRESHOLD);
    }
   }
 }

**光を追いかけるロボット [#ked9e9bd]

 int light_max=0,time_max=0;
 #define TURN_TIME 360
 #define TURN_RIGHT OnFwd(OUT_A);OnRev(OUT_C);
 #define TURN_LEFT OnRev(OUT_A);OnFwd(OUT_C);
 #define STOP Off(OUT_A+OUT_C);
 task main()
 { 
   SetSensor(SENSOR_1,SENSOR_LIGHT);
   ClearTimer(0);
    
    while(FastTimer(0)<TURN_TIME)
    {
       TURN_RIGHT;
       if(SENSOR_1>light_max)
       {
         light_max=SENSOR_1;
         time_max=FastTimer(0);
        }
    }  
    STOP;  Wait(50);
  TURN_LEFT;
  Wait(TURN_TIME-time_max);
  Off(OUT_A+OUT_C);
  while(true)
 {
   if(SENSOR_1!=light_max)
   {
     TURN_RIGHT;
     until(SENSOR_1==light_max);
    }
  }
 }


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