*目次 [#edaaf49e]

#contents

*課題3 懐中電灯に向かってブロックを投げるロボットの製作 [#bf1993b2]

以下の動きをするロボットとプログラムを作成した。

-全方向から懐中電灯の方向を探し出し、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。
-懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。
-懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば50cmの距離まで近づいてブロックを投げる。~
※ただし、モータ、光センサ、タッチセンサはそれぞれ2個まで使用可。懐中電灯の代わりに携帯のライトなどを利用してもよい。

**ロボット製作 [#h46cb510]

#ref(2008a/A1/課題3左/全体3.jpg,70%,全体);
全体を撮った写真~
#ref(2008a/A1/課題3左/横3.jpg,70%,横);
横からの写真~
#ref(2008a/A1/課題3左/前3.jpg,70%,前);
前からの写真~
#ref(2008a/A1/課題3左/投げ3.jpg,70%,投げ);
投げる部分の写真~

**プログラム作成 [#je38350b]
 #define THRESHOLD 40
 sub throw()//ホイールを投げる動作
 {
  OnFwd(OUT_C);
  Wait(100);
  Off(OUT_C);
 }
 
 task main ()
 {
     SetSensor(SENSOR_1,SENSOR_LIGHT);//光センサーを1にセット
     SetSensor(SENSOR_3,SENSOR_LIGHT);//光センサーを3にセット
     while(true)
     {                                               
        while((SENSOR_1 < THRESHOLD) && (SENSOR_3 < THRESHOLD)) //光センサー1,3が共に光を感知しなかったとき
         {
             OnFwd(OUT_A);//右回り
             Wait(100);
             Off(OUT_A);
          } 
        while((SENSOR_1 >= THRESHOLD) && (SENSOR_3 < THRESHOLD))//光センサー1は光を感知したが、3 は感知しなっかったとき 
          {
             OnFwd(OUT_A);//右回り
             Wait(100);
             Off(OUT_A);
          }
        while((SENSOR_1 < THRESHOLD) && (SENSOR_3 >= THRESHOLD))//光センサー3は光を感知したが、1は感知しなかったとき
           {
              OnRev(OUT_A);//左回り
              Wait(30);
              Off(OUT_A);       
           }
        while((SENSOR_1 >= THRESHOLD) && (SENSOR_3 >= THRESHOLD))//光センサー1、3共に光を感知したとき
           {
              throw();//ホイールを投げる
              Off(OUT_A);
           }
     }
 }


 #define THRESHOLD 40
  sub throw()//ホイールを投げる動作
 {
  OnFwd(OUT_C);
  Wait(100);
  Off(OUT_C);
 }
task main()
 {
 SetSensor(SENSOR_1,SENSOR_LIGHT);//光センサーを1にセット
 SetSensor(SENSOR_3,SENSOR_LIGHT);//
 while (true)
     { 
         if((SENSOR_1 < THRESHOLD)&&(SENSOR_3 < THRESHOLD)) //光センサー1、3共に光を感知していない場合。
          {
             OnFwd(OUT_B); //右回りに進む。
             Wait(30);
          } 
         if((SENSOR_1 > THRESHOLD)&&(SENSOR_3 < THRESHOLD)) //光センサ−1のみ光を感知した場合。
          {
             OnFwd(OUT_B); //右回りに進む。                        
             Wait(30);
          }
         if((SENSOR_1 < THRESHOLD)&&(SENSOR_3 > THRESHOLD)) //光センサー3のみ光を感知した場合。
          {
             OnRev(OUT_B); //左回りに進む。                       
             Wait(6);
          }
         if((SENSOR_1 > THRESHOLD)&&(SENSOR_3 > THRESHOLD)) //光センサー1、3共に光を感知した場合。
          {
             throw();         
          }
     }  
]

#define THRESHOLD 40
  sub throw()//ホイールを投げる動作
 {
  OnFwd(OUT_C);
  Wait(100);
  Off(OUT_C);
 }
task main()
 {
 SetSensor(SENSOR_1,SENSOR_LIGHT);//光センサーを1にセット
 SetSensor(SENSOR_3,SENSOR_LIGHT);//
 while (true)
     { 
         if((SENSOR_1 < THRESHOLD)&&(SENSOR_3 < THRESHOLD)) //光センサー1、3共に光を感知していない場合。
          {
             OnFwd(OUT_B); //右回りに進む。
             Wait(30);
          } 
         if((SENSOR_1 > THRESHOLD)&&(SENSOR_3 < THRESHOLD)) //光センサ−1のみ光を感知した場合。
          {
             OnFwd(OUT_B); //右回りに進む。                        
             Wait(30);
          }
         if((SENSOR_1 < THRESHOLD)&&(SENSOR_3 > THRESHOLD)) //光センサー3のみ光を感知した場合。
          {
             OnRev(OUT_B); //左回りに進む。                       
             Wait(6);
          }
         if((SENSOR_1 > THRESHOLD)&&(SENSOR_3 > THRESHOLD)) //光センサー1、3共に光を感知した場合。
          {
             throw();         
          }
     }  
]


**苦労・工夫した点 [#q5c103dd]

**感想 [#y8b23b5c]

**コメントをお願いします [#n08a6ee6]
#comment

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