2007a/MemberOnly/進行状況A

ロボット紹介

ロボット

今回は、スピードを遅くして、コーナーでのまがりをスムーズにするようなマシンを作りました。全体像はシンプルな印象ですが、タイヤとタイヤを1つのギアで回転させているため、タイヤの回るスピードを減速させることができました。

ギア

コース紹介

コース

ミッキーマウスをイメージしたコースです。耳の部分の交差点が直角の交差点でないため意外と難コースとなっています。

プログラム

黒線トレース

#define THRESHOLD 40   //閾値
#define RUN_TIME 600   //トレースする時間


task main()
{
   //センサーを定義
   SetSensor(SENSOR_1,SENSOR_LIGHT);
   SetSensor(SENSOR_2,SENSOR_TOUCH);
   SetSensor(SENSOR_3,SENSOR_LIGHT);
    
   ClearTimer(0);
    
    
 while( Timer(0) <= RUN_TIME ){

       //黒線上ではないとき直線
   if(SENSOR_1 >= THRESHOLD && SENSOR_3 >= THRESHOLD){
   OnFwd(OUT_A+OUT_C);
   }

   //黒線上のとき一旦道を譲り左方向へ移動(線上へ行くため)
   else if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD){
   OnRev(OUT_A+OUT_C);
   Wait(30);
   OnFwd(OUT_A+OUT_C);
   Wait(30);
   Off(OUT_A+OUT_C);
   Wait(50)
   OnFwd(OUT_C);
   Off(OUT_A);
   Wait(100);
   until(SENSOR_3 <= THRESHOLD);
   }
         
   //右側が黒い線に入ると、右に曲がる。
   else if(SENSOR_3 < THRESHOLD){
   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(4);
   }

   //左側が黒い線に入ると、左に曲がる。
   else{
   OnFwd(OUT_C);
   OnRev(OUT_A);
   Wait(4);
   }
    
   //ぶつかったときにタッチセンサーにより停止
   if(SENSOR_2 == 1){
   OnRev(OUT_A+OUT_C);
   Wait(50);
    Off(OUT_A+OUT_C);
   Wait(300);
 }
}
Off(OUT_A+OUT_C);
   //END
}

ミッキーマウスマーチ

#define So  392 
#define Ra  440
 #define Shi 494 
#define Do  523
#define Re  587
#define Mi  659
#define Fa  698
#define Sol 784

  task play_music()   
 {
   while (true)
   {
       PlayTone(Do,25); Wait(30);  
       PlayTone(Do, 5); Wait(10); 
       PlayTone(Do,25); Wait(30);  
       PlayTone(Do, 5); Wait(10);
 
       PlayTone(Do,25); Wait(30);
       PlayTone(Do, 5); Wait(10);
       PlayTone(Do,25); Wait(30);
       PlayTone(Do, 5); Wait(10);
        
       PlayTone(Re,25); Wait(30);
       PlayTone(Do, 5); Wait(10);
       PlayTone(Shi,25); Wait(30);
       PlayTone(Ra, 5); Wait(10);
       PlayTone(So,80); Wait(85);
        
       PlayTone(Do,25); Wait(30);
       PlayTone(Do, 5); Wait(10);
       PlayTone(Do,35); Wait(40);
       PlayTone(Do,25); Wait(30);
       PlayTone(Do, 5); Wait(10);
       PlayTone(Do,35); Wait(40);
        
       PlayTone(Mi,25); Wait(30);
       PlayTone(Do, 5); Wait(10);

       PlayTone(Re,25); Wait(30);
       PlayTone(Shi,5); Wait(10);
       PlayTone(Do,80); Wait(85);
        
       PlayTone(Do,25); Wait(30);  
       PlayTone(Do, 5); Wait(10); 
       PlayTone(Do,25); Wait(30);  
       PlayTone(Do, 5); Wait(10);
 
       PlayTone(Do,25); Wait(30);
       PlayTone(Do, 5); Wait(10);
       PlayTone(Do,25); Wait(30);
       PlayTone(Do, 5); Wait(10);
        
       PlayTone(Re,25); Wait(30);
       PlayTone(Do, 5); Wait(10);
       PlayTone(Shi,25); Wait(30);
       PlayTone(Ra, 5); Wait(10);
       PlayTone(So,80); Wait(85);
        
       PlayTone(Do,25); Wait(30);
       PlayTone(Do, 5); Wait(10);
       PlayTone(Do,35); Wait(40);
       PlayTone(Do,25); Wait(30);
       PlayTone(Do, 5); Wait(10);
       PlayTone(Do,35); Wait(40);
        
       PlayTone(Mi,25); Wait(30);
       PlayTone(Do, 5); Wait(10);
 
       PlayTone(Re,25); Wait(30);
       PlayTone(Shi,5); Wait(10);
       PlayTone(Do,30); Wait(40);
        
        
       PlayTone(Do,25); Wait(30);
       PlayTone(Do, 5); Wait(10);
       PlayTone(Ra,100); Wait(120);
       PlayTone(Do,25); Wait(30);
       PlayTone(Do, 5); Wait(10);
       PlayTone(So,100); Wait(120);
        
       PlayTone(So,25); Wait(30);
       PlayTone(So, 5); Wait(10);
 
       PlayTone(Ra,25); Wait(30);
       PlayTone(Ra,5); Wait(10);
       PlayTone(Ra,25); Wait(30); 
       PlayTone(Ra,5); Wait(10);
       PlayTone(Ra,25); Wait(30);
       PlayTone(Ra,5); Wait(10);
       PlayTone(Shi,25); Wait(30);
       PlayTone(Do, 5); Wait(10);    
       PlayTone(Re,140); Wait(160);  
        }
       task main()
       {
    SetSensor(SENSOR_1, SENSOR_TOUCH);

   start play_music ;    
   OnFwd(OUT_A+OUT_B);   
   until (SENSOR_1 == 1;
   stop play_music ;     
   Off(OUT_A+OUT_B);   
 

マリオ

 #define E   330
 #define So  392 
 #define SSo 415
 #define Ra  440
 #define RRa  466
 #define Shi 494
 #define Do  523
 #define Re  587
 #define RRe 622
 #define Mi  659
 #define Fa  698
 #define FFa 740
 
 #define Sol 784
 #define r   880
 #define C  1047

 task play_music()   // 音楽を演奏するタスク
 {
   while (true)
   {
       PlayTone(Mi,10); Wait(15);  // Wait の時間の方を少し長くして
       PlayTone(Mi, 15); Wait(30);  // 同じ音を続けて鳴らす場合にも
       PlayTone(Mi,10); Wait(30);  // 一つの音にならないようにしている
       PlayTone(Do,10); Wait(15);
       PlayTone(Mi,20); Wait(30);
       PlayTone(Sol,20); Wait(60);
       PlayTone(So,20); Wait(60);      

       PlayTone(Do,15); Wait(45);
       PlayTone(So, 15); Wait(45);
       PlayTone(E,15); Wait(45);
       PlayTone(Ra,25); Wait(30);
       PlayTone(Shi,25); Wait(30);
       PlayTone(RRa,10); Wait(15);
       PlayTone(Ra,20); Wait(30);
 
       PlayTone(So,15); Wait(20);
       PlayTone(Mi,15); Wait(20);
       PlayTone(Sol,15); Wait(20);
       PlayTone(r, 15); Wait(30);
       PlayTone(Fa,10); Wait(15);
       PlayTone(Sol,25);Wait(30);
       PlayTone(Mi,25); Wait(30);  
       PlayTone(Do, 10); Wait(15);  
       PlayTone(Re,10); Wait(15);  
       PlayTone(Shi,15); Wait(45);
  
 PlayTone(Do,15); Wait(45);          //繰り返し
       PlayTone(So, 15); Wait(45);
       PlayTone(E,15); Wait(45);
       PlayTone(Ra,25); Wait(30);
       PlayTone(Shi,25); Wait(30);
       PlayTone(RRa,10); Wait(15);
       PlayTone(Ra,20); Wait(30);
 
       PlayTone(So,15); Wait(20);
       PlayTone(Mi,15); Wait(20);
       PlayTone(Sol,15); Wait(20);
       PlayTone(r, 15); Wait(30);
       PlayTone(Fa,10); Wait(15);
       PlayTone(Sol,25);Wait(30);
       PlayTone(Mi,25); Wait(30);  
       PlayTone(Do, 10); Wait(15);  
       PlayTone(Re,10); Wait(15);  
        PlayTone(Shi,15); Wait(75);
   
       PlayTone(Sol,10); Wait(15);
       PlayTone(FFa,10); Wait(15);
       PlayTone(Fa,10); Wait(15); 
       PlayTone(RRe,15); Wait(30);
       PlayTone(Mi, 15); Wait(30);
       PlayTone(SSo,10); Wait(15);
       PlayTone(Ra,10); Wait(15);
       PlayTone(Do,15); Wait(30);
       PlayTone(Ra,10); Wait(15);
       PlayTone(Do,10); Wait(15); 
       PlayTone(Re,10); Wait(45);
    
       PlayTone(Sol,15); Wait(15);
       PlayTone(FFa,15); Wait(15);
       PlayTone(Fa, 5); Wait(15);
       PlayTone(RRe,10); Wait(30);
       PlayTone(Mi,5);Wait(30);
       PlayTone(C,15); Wait(30);  
       PlayTone(C,8); Wait(15); 
       PlayTone(C,15); Wait(90);  
    
       PlayTone(Sol,10); Wait(15);
       PlayTone(FFa,10); Wait(15);
       PlayTone(Fa,10); Wait(15); 
       PlayTone(RRe,15); Wait(30);
       PlayTone(Mi, 15); Wait(30);
       PlayTone(SSo,10); Wait(15);
       PlayTone(Ra,10); Wait(15);
       PlayTone(Do,15); Wait(30);
       PlayTone(Ra,10); Wait(15);
       PlayTone(Do,10); Wait(15); 
       PlayTone(Re,10); Wait(45);
  
       PlayTone(RRe,10); Wait(45);
       PlayTone(Re,10); Wait(45);
       PlayTone(Do,20); Wait(120);    
       
  PlayTone(Sol,10); Wait(15);    //繰り返し
       PlayTone(FFa,10); Wait(15);
       PlayTone(Fa,10); Wait(15); 
       PlayTone(RRe,15); Wait(30);
       PlayTone(Mi, 15); Wait(30);
       PlayTone(SSo,10); Wait(15);
       PlayTone(Ra,10); Wait(15);
       PlayTone(Do,15); Wait(30);
       PlayTone(Ra,10); Wait(15);
       PlayTone(Do,10); Wait(15); 
       PlayTone(Re,10); Wait(45);
    
     
       PlayTone(Sol,15); Wait(15);
       PlayTone(FFa,15); Wait(15);
       PlayTone(Fa, 5); Wait(15);
       PlayTone(RRe,10); Wait(30);
       PlayTone(Mi,5);Wait(30);
       PlayTone(C,15); Wait(30);  
       PlayTone(C,8); Wait(15); 
       PlayTone(C,15); Wait(90);  
      
       PlayTone(Sol,10); Wait(15);
       PlayTone(FFa,10); Wait(15);
       PlayTone(Fa,10); Wait(15); 
       PlayTone(RRe,15); Wait(30);
       PlayTone(Mi, 15); Wait(30);
       PlayTone(SSo,10); Wait(15);
       PlayTone(Ra,10); Wait(15);
       PlayTone(Do,15); Wait(30);
       PlayTone(Ra,10); Wait(15);
       PlayTone(Do,10); Wait(15); 
       PlayTone(Re,10); Wait(45);   
    
       PlayTone(RRe,10); Wait(45);
       PlayTone(Re,10); Wait(45);
       PlayTone(Do,20); Wait(120)             
      
       PlayTone(Do,10); Wait(15);
       PlayTone(Do,15); Wait(30);
       PlayTone(Do, 15); Wait(30);
       PlayTone(Do,10); Wait(15);
       PlayTone(Re,25); Wait(30);
       PlayTone(Mi,10); Wait(15);
       PlayTone(Do,15); Wait(30);
       PlayTone(Ra,10); Wait(15);
       PlayTone(So,15); Wait(60);
        
       PlayTone(Do,10); Wait(15);
       PlayTone(Do,15);
       PlayTone(Do, 15); Wait(30); 
       PlayTone(Do,10); Wait(15);
       PlayTone(Re,10);Wait(15);
       PlayTone(Mi,25); Wait(135);  
        
       PlayTone(Do,10); Wait(15);
       PlayTone(Do,15); Wait(30);
       PlayTone(Do, 15); Wait(30);
       PlayTone(Do,10); Wait(15);
       PlayTone(Re,25); Wait(30);
       PlayTone(Mi,10); Wait(15);
       PlayTone(Do,15); Wait(30);
       PlayTone(Ra,10); Wait(15);
       PlayTone(So,15); Wait(60);
              
     
       }}
   task main()
   {
 
   SetSensor(SENSOR_1, SENSOR_TOUCH);

   start play_music ;    // 演奏を開始
   OnFwd(OUT_A+OUT_B);   // 前進

   until (SENSOR_1 == 1);
   stop play_music ;     // 演奏を停止
   Off(OUT_A+OUT_B);     // 動きも停止
}

タッチセンサは2台で走っているときにぶつかると、反転して進むようにプログラムされています。光センサは黒線の上に来るとその反応したセンサの方向に曲がるようになっています。

苦労した点

・壊れているのか、センサーが左の部分があまり反応せず、しっかりと曲がらせるのに苦労した。*追記*やはりセンサが1つ壊れているようでした。

コースの難しいとこ

交差点が真っすぐではないというかなりの鬼コース。クリアするために交差点を通るときは左方向に斜めに走りながらクリアするということを思いつくまでにはかなり時間がかかりました。

・期限を意識して1週間前から集まり始めたが、ぐだぐだして時間だけ消費して、あまり作業が進まなかった。みんな何をすればいいかよくわかっていなかった。

がんばった点

・ロボットの紹介にも書いたが、タイヤの回る速度を遅くするために、ギアを組み合わせてマシンを作成した。

・コースの形をミッキーにしたので、曲もそれにあわせてミッキーマウスマーチにした。

まとめ

・しっかり今後はスケジュール管理を早めからして課題に取り組みたい。

・難コースであっても知恵を出し切ればクリアできることを確認できた。

・ロボの作成やプログラムがわかる人とわからない人がいたので、わかる人が来ないと作業が進まず、困ったので、みんなわかるように事前準備する必要があると思った。



添付ファイル: file20070620185310[1].jpg 346件 [詳細] file20070620185349[2]1.JPG 165件 [詳細] filea.jpg 313件 [詳細] file20070621191430.jpg 167件 [詳細] file20070620185239.jpg 320件 [詳細] file20070620185349.jpg 315件 [詳細] file20070620185310.jpg 154件 [詳細] file20070620185257.jpg 160件 [詳細] file20070619193102.jpg 160件 [詳細] file20070619192944.jpg 168件 [詳細] file20070619192912.jpg 168件 [詳細] file20070619192815.jpg 157件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-06-28 (木) 22:28:18