[[2007a/MemberOnly/進行状況A]]
*ライン・トレース・ロボット [#z3a0f3c5]
黒い線に沿って走るロボットを作成した。A4Rの班と、一つのコースで二つのロボットが走るコースを作った。
*ロボット紹介 [#k75fc585]
タッチセンサーの下に光センサーを取り付けたロボット。
#ref(2007a/A4/課題2左/TS3C0001.JPG)
*制作過程 [#hc04852f]
一番はじめにつくったロボットは前にタッチセンサー後ろに光センサーがついたロボットだったがやはり
光センサーが後ろにあるせいかあまり安定しなかった。そこで、前にあるタッチセンサーと合体させ前に
光センサーとタッチセンサー両方のセンサーをとりつけ安定させることができた。
*苦労した点 [#u66b42a9]
タッチセンサーと光センサーを同じ場所に取り付けるのに苦労した。光センサーが地面に近すぎると、うまく明るさを認識できずに走らなかったり、遠すぎるとずっと走り続けたりした。最終的にはちょうど良い位置(地面から5センチくらい)を見つけることができた。
*プログラム [#c3f2ae2f]
 #define THRESHOLD 40
 #define Do  523
 #define Re  587
 #define Mi  659
 #define Fa  698
 #define Sol 784

 task play_music()                               // 走行時に鳴る音楽のプログラム
 {
     while(true)
     {
        PlayTone(Mi,25); Wait(15); 
        PlayTone(Re, 5); Wait(5);  
        PlayTone(Do,15); Wait(10);  
        PlayTone(Re,15); Wait(10);

        PlayTone(Mi,15); Wait(10);
        PlayTone(Mi,15); Wait(10);
        PlayTone(Mi,35); Wait(20);

        PlayTone(Re,15); Wait(10);
        PlayTone(Re,15); Wait(10);
        PlayTone(Re,35); Wait(20);

        PlayTone(Mi,15); Wait(10);
        PlayTone(Sol,15); Wait(10);
        PlayTone(Sol,35); Wait(20);

        PlayTone(Mi,25); Wait(15);
        PlayTone(Re, 5); Wait(5);
        PlayTone(Do,15); Wait(10);
        PlayTone(Re,15); Wait(10);

        PlayTone(Mi,15); Wait(10);
        PlayTone(Mi,15); Wait(10);
        PlayTone(Mi,35); Wait(20);

        PlayTone(Re,15); Wait(10);
        PlayTone(Re,15); Wait(10);
        PlayTone(Mi,25); Wait(15);
        PlayTone(Re, 5); Wait(5);

        PlayTone(Do,55); Wait(30);
   }    
 }    

 task main ()
 {
 SetSensor(SENSOR_1,SENSOR_LIGHT);       // センサー1は光センサーである
 SetSensor(SENSOR_3,SENSOR_TOUCH);     //   センサー3はタッチセンサーである
 

 
 while(true) 
 {
        start play_music;                             // 音楽スタート       
       if(SENSOR_1<THRESHOLD) {             //   センサー1が40以上なら
       OnFwd(OUT_A);                                
       Off(OUT_C);
       }
          else                                               //   それ以外
          {       
          Off(OUT_A);
          OnFwd(OUT_C);
           }
          until (SENSOR_3==1);                    //    センサー3が反応したとき
    Off(OUT_A+OUT_B);Wait(270);
    stop play_music;                                  //     音楽停止
    }  
    
 }
*感想 [#c0c44a14]
黒い線が光に反射してしまい、練習ではうまくセンサーが線を認識できずに大変だった。

音楽の鳴らすタイミングのプログラムがなかなか上手くできなくて少し苦労した。
*コメントをどうぞ [#ja4dc233]
-もう少し"過程"の説明があると面白い物に仕上がると思います。 -- [[ヒロヤ]] &new{2007-06-21 (木) 13:02:08};
-while のループの中に until (SENSOR_3==1); という命令がありますが、この命令があるとタッチセンサーが反応するまで次の命令に進むことができず、ライントレースを行うことができないのではないでしょうか。もう一度、プログラムの流れをよく考えてみてください。 -- [[松本]] &new{2007-06-26 (火) 08:57:49};

#comment


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