[[2006b/A4]]
*このページについて [#fc0a0fe6]
課題3:懐中電灯などの光源を用意する。まず明るさに比例した周波数の音を出しながら全方角の中から光源のある方角を探し、探した後は、光源の光を追いかけて進むロボットを作成せよ。

ただし支給されているモータ、光センサ、タッチセンサはいくつ使ってもよい。

このページでは、光の明るさに比例した音を出して明るいところをその場で回転しながら探し、光源を追うロボットについて紹介します。
*ロボットについて [#j4050858]
光をうまくとらえられるように2個の光センサーを前向きに、ロボットの前面に取り付けています。
光をうまくとらえられるように2個の光センサーを前向きに、ロボットの前面に取り付けています。足回りは、キャタピラだと摩擦が大きくなってしまいプログラムが作り辛いので四輪のタイヤとしています。
*プログラム [#f3806847]
 #define TURN_TIME 400  ロボットが1回転する時間を設定します。
 task main ()
 {
   SetSensor(SENSOR_1,SENSOR_LIGHT);
   SetSensor(SENSOR_3,SENSOR_LIGHT); 光センサーを設定します。
   int light_max=0,time_max;
   ClearTimer(0);         
   while(FastTimer(0)<TURN_TIME)   光の強さが最高になるまで繰り返します。
     {OnFwd(OUT_A); OnRev(OUT_C); 
       PlayTone(SENSOR_1*10,3);  光の強さに応じた高さの音が出ます。
     {OnFwd(OUT_A); OnRev(OUT_C);  その場で回転します。
       PlayTone(SENSOR_1*10,3);  光の強さに応じた高さの音を出します。
            if(SENSOR_1>light_max) 強い光を発見したら、発見までにかかった時間を記憶します。
          {light_max=SENSOR_1;
          time_max=FastTimer(0);
          }  
     }  
    OnFwd(OUT_C);OnRev(OUT_A);Wait(TURN_TIME-time_max); 光が最も強かった方向を向きます。
    OnFwd(OUT_A+OUT_C); Wait(50);
   while(true){
   while(true){            光を追いかけ始めます。
     if(SENSOR_1>SENSOR_3+3)
       {OnFwd(OUT_C);  OnRev(OUT_A); Wait(10);} センサ−1の方が明るかったらセンサ−1の方を向きます。
     if(SENSOR_1+3<SENSOR_3)
       {OnFwd(OUT_A); OnRev(OUT_C); Wait(10);} センサ−3の方が明るかったらセンサ−3の方を向きます。 
     else{OnFwd(OUT_A+OUT_C);}
     else{OnFwd(OUT_A+OUT_C);}    明るい方向を向いているときは、そのまま走ります。
    }
   }
 
*苦労した点 [#d59674fb]
-どのように最も光の強い方向を向くかということ。授業での説明があるまでは、うまく光の方向を向くことができなかった。
-どのように光の強さに応じた周波数の音を出すかということ。光の強いところは察知できても音をどう出すかは、すぐには、いい考えが浮かばなかったために話し合った。
-懐中電灯からの光の当て方によっては(光センサーとの角度によっては)うまくセンサーが反応しないことがあった。外からの光によって、懐中電灯とは別の方向に向かってしまうことがあった。
*工夫した点 [#h226c37c]
-光の強さに応じた周波数の出し方。相方の考えで、光の強さ×10Hzの音を出す仕組みにした。
*まとめ [#q17f1b11]
懐中電灯の光を当てる角度を工夫すれば、それを追うことはできるが光センサーを少し上向きに取り付ければもっと感度がよくなったと思う。
**ご自由にコメントをどうぞ [#je1fc76b]
-もう少し具体的に書いて下さい。どんな事で苦労したのか、原因は何なのか、どう工夫したのかetc. -- [[ゆき(TA)]] &new{2007-02-02 (金) 12:51:37};

#comment


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