2004/C5/45班

1. ハート形を描くロボット(必須)

ロボットにペンを取り付けA3用紙にハート型を描くロボットを作成しなさい。


  • プログラム作りがうまくいかなかったので、ペンをつける場所を工夫しました。ペンの位置をロボットの重心にできるだけ近づけることで、なんとかハートがかけました。
task main ()
{
OnFwd (OUT_A+OUT_C);
Wait (185);
Off (OUT_C);
Wait (390);
OnRev (OUT_C);
Off (OUT_A);
Wait (390);
OnRev (OUT_A);
Wait (185);
Off (OUT_A+OUT_C);
}

2. 台から落ちないロボット(必須)

机の上で動き回るロボットを作成しなさい。 ただし方向変換は机の端に来たときに行うこと。


task main ()
 {
   SetSensor(SENSOR_1,SENSOR_LIGHT);
   
   while(true)
   {
     OnFwd(OUT_A+OUT_C);
     until(SENSOR_1<35);
     OnRev(OUT_A+OUT_C);
     Wait(50);
     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(100);
   }
 } 

3. ライントレースをするロボット(必須)

できるだけ速いロボットを作成すること


  • 左方向にはすばやく回れるんですけど、右回りがうまくいきません。
task main ()
{
 SetSensor (SENSOR_1, SENSOR_LIGHT);
 ClearTimer(0);
 while (true)
 {if (SENSOR_1<40) {
 SetPower (OUT_A,7);
 SetPower (OUT_C,3);
 OnFwd (OUT_A+OUT_C);}
 else{Off (OUT_A);
      SetPower (OUT_C,7);
      OnFwd (OUT_C); }
 }
}

4. 光を追いかけるロボット(必須)

まず最初に一回転してもっとも明るい方向(懐中電灯の方向)を探し、次に懐中電灯の光を追いかけて進むようなロボットを作成しなさい。


OUT_Aは左モーター,OUT_Cは右モーター,光センサーは"1"に接続する。

進行方向判断時(サブルーチンRIGHT_or_LEFT)の回転時間はしようロボットによって改定する必要あり。

<このロボットの簡単な動き> (10秒直進→明るいほうへ向く)×無限

int light_before=0;
int light_middle=0;
int light_right=0;
int light_left=0;
void go_straight(int t){
	OnFwd(OUT_A+OUT_C);
	Wait(t);
}
void turn_right(int t){ //右旋回
	OnFwd(OUT_A);
	OnRev(OUT_C);
	Wait(t);
}
void turn_left(int t){ //左旋回
	OnFwd(OUT_C);
	OnRev(OUT_A);
	Wait(t);
}
sub RIGHT_or_LEFT(){//明るい方向へ向くサブルーチン
	SetSensor(SENSOR_1, SENSOR_LIGHT);
	light_middle=SENSOR_1;//真中の光量取得
	turn_right(10);
	light_right=SENSOR_1;//右の光量取得
	turn_left(20);
	light_left=SENSOR_1;//左の光量取得
	/*右が明るい*/
	if(light_right>light_middle&&light_right>light_left){
		turn_right(20);
		}
	/*右前が明るい*/
if(light_right==light_middle&&light_middle>light_left){
		turn_right(15);
		}
	/*真中が明るい*/
if((light_middle>light_right&&light_middle>light_left)||(light_right==light_middle&&light_middle==light_left)){
		turn_right(10);
		}
	/*左前が明るい*/
if(light_right<light_middle&&light_middle==light_left){
		turn_right(5);
		}
	/*左が明るい(=動かない)*/
}
task main(){ //光追跡
	SetSensor(SENSOR_1, SENSOR_LIGHT);
	while(true){
		light_before=SENSOR_1;
		go_straight(10);//10秒間前進→10秒に一度チェック
		if(light_before>=SENSOR_1){
			RIGHT_or_LEFT();
			}
		}
}

5. 演奏ロボット(必須)

インストラクション(説明書)の最後にある「Top Secret」を参考に、音楽を演奏しながら前進し障害物にぶつかったら(あるいは明るい光にあたったら)後退しながら方向を変えるロボットを作成しなさい。ただし移動のためのモータはひとつだけ使うものとし、また前進しているときと後進している時で違う音楽を演奏すること。


  • タッチセンサーを利用して、ぶつかると向きを変えて進みます。向きを変えている最中に音楽が変わるようにしたんですけど、なぜか最初の音楽がなかなか止まりません。
  • 音楽のプログラム 
    • ハウルの動く城「人生のメリーゴーランド」
    • スノースマイル
      task play_music1()
      {
         while (true)
         {
          ここに「スノースマイル」のプログラムが入ります。
         すごく長いので省略します。
          詳しくは上の音楽プログラムを見てください。 }
        
       }
      task play_music2()
      { while (true)
       PlaySound (SOUND_FAST_UP);
       }
      
       task main ()
      {
          SetSensor(SENSOR_1, SENSOR_TOUCH);
      
      while (true)
       {
      
          start play_music1 ;
        Wait (300);
        OnFwd (OUT_A);
        until (SENSOR_1==1);
         stop play_music1 ;
      
          start play_music2;
         OnRev (OUT_A);
         Wait (300);
         stop play_music2;  }
        }

6. 二足歩行ロボット(自由)

7. その他(自由)


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-02-04 (金) 20:16:03 (5315d)