[[2006b/A3]]

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

*ロボット作成について [#jdfac5b9]
今回はモーターを3つ使って2つはタイヤを動かすためのモーター、もう1つはセンサーだけを回転させるように作りました。これにより機体全体を動かすよりも時間が短縮でき、すぐ次の動作に移ることができるようにしました。
*苦労した点&工夫した点 [#y98c646d]
+センサーを回転させる仕組みを作成するときモーターを設置する場所に苦労した。また、歯車をかみ合わせるときにも苦労した。
+メロディーを作るときにうまく音程が合わず何度も数値をかえて大変だった。しかし、しっかり聞き取れるくらいまでにできてよかった。
+
*プログラム [#ca62de6e]
 #define  Do  523       音程を定義
 #define  Re  587
 #define  Me  659
 task play_music1()
 { 
     while(true)         チャルメラ演奏
     {
      PlayTone(Do,15); Wait(20);
      PlayTone(Re,15); Wait(20);
      PlayTone(Me,30); Wait(40);
      PlayTone(Re,15); Wait(20);
      PlayTone(Do,15);Wait(25);
      PlayTone(Do,13);Wait(18);
      PlayTone(Re,13);Wait(18);
      PlayTone(Me,13);Wait(18);
      PlayTone(Re,13);Wait(18);
      PlayTone(Do,13);Wait(18);
      PlayTone(Re,30);Wait(40);
      Wait(20);
      }
 }
 #define   d_     440   音程を定義
 #define   re_    494
 #define   me_    523
 #define   fa_    587
 #define   so_    659
 #define   ra_    698
 #define   si_     784
 #define   dd   880
 #define   ree    988
 task play_music2()
 {
     while(true)         スターウォーズ演奏
     {
     PlayTone(d_,20);Wait(25);
     PlayTone(so_,20);Wait(25);
     PlayTone(fa_,10);Wait(15);
     PlayTone(me_,10);Wait(15);
     PlayTone(re_,10);Wait(15);
     PlayTone(dd,20);Wait(25);
     PlayTone(so_,20);Wait(25);
     PlayTone(fa_,10);Wait(20);
     PlayTone(me_,10);Wait(20);
     PlayTone(re_,10);Wait(20);
     PlayTone(dd,20);Wait(25);
     PlayTone(so_,20);Wait(25);
     PlayTone(fa_,10);Wait(15);
     PlayTone(mi_,10);Wait(15);
     PlayTone(fa_,10);Wait(15);
     PlayTone(ree,25);Wait(30);
     Wait(20);
     }
 }
ここまでは音楽のプログラム。↑
次は機械を動かすためのプログラム。↓
 #define TURN_TIME   150
 task main()
 {
     SetSensor(SENSOR_1,SENSOR_LIGHT);
     int time_max;
     ClearTimer(0); 
     while(FastTimer(0)< TURN_TIME)
     {
         start play_music1;
         OnFwd(OUT_B);
         if(SENSOR_1>50) 
          {
           ClearTimer(1);    
          }
      }
         OnRev(OUT_B);Wait(150);
         Off(OUT_B);
         OnFwd(OUT_A);OnRev(OUT_C);
         Wait(FastTimer(1));
         OnFwd(OUT_C);
         stop play_music1;
         
     while(true)
     {
         start play_music2;
         if(SENSOR_1<50)
          {
          Off(OUT_A+OUT_C);
          ClearTimer(2);
          OnFwd(OUT_B);; 
          until(SENSOR_1>=50);
          OnRev(OUT_B);Wait(FastTimer(2));
          Off(OUT_B);
          OnFwd(OUT_A);OnRev(OUT_C);Wait(FastTimer(2));
          OnFwd(OUT_C);
          }
         else
          {
           OnFwd(OUT_A+OUT_C);
          }       
     }     
  }
*感想 [#q20453a1]
プログラムが複雑で作るのが大変だったけどなんとかできてよかった。次はいよいよロボコンに向けたロボット、プログラム作りなのでがんばっていきたいです。

プログラムやホームページに関するコメントお願いします。
-センサを回転する機構の写真があればぜひ掲載してください。 -- [[松本(教員)]] &new{2007-01-09 (火) 13:57:08};
-プログラムのコメントをきちんとつけてください。 -- [[まいける(TA)]] &new{2007-01-12 (金) 07:33:15};

#comment

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