2006a/A3

光ロボ

20060726214915.jpg

課題3

懐中電灯の光を追いかけて進むロボットを製作し、以下の中から2種類以上のプログラムを作成せよ。

 ・1光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探す  ・2光源を見失った時には明るさに比例した周波数の音を出しながら旋回して光源を探す  ・3光源を見失っていないときにはある曲を演奏し、見失った時には別の曲を演奏しながら光源を探す  ・4上記のいずれかに『光源に近づき過ぎると停止する』という機能を追加する。ただし支給されているモータ、光センサ、タッチセンサはいくつ使ってもよい。

光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探すロボ

制作者:トミー&Hagino
掲載日:7月21日

task main()
{
while(true)
#define Do 523   //ド
#define Re 587   //レ
#define Mi 659   //ミ
#define Fa 698   //ファ
#define So 784   //ソ
#define Ra 880   //ラ
#define Si 988   //シ
task play_music()   //きらきら星
{
while(true)
{
     PlayTone(Do,30); Wait(35);
     PlayTone(Do,30); Wait(35);
     PlayTone(So,30); Wait(35);
     PlayTone(So,30); Wait(35);
     PlayTone(Ra,30); Wait(35);
     PlayTone(Ra,30); Wait(35);
     PlayTone(So,40); Wait(50);
     
     PlayTone(Fa,30); Wait(35);
     PlayTone(Fa,30); Wait(35);
     PlayTone(Mi,30); Wait(35);
     PlayTone(Mi,30); Wait(35);
     PlayTone(Re,30); Wait(35);
     PlayTone(Re,30); Wait(35);
     PlayTone(Do,40); Wait(50);
     }
  }
task main ()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);   //
while(true)
{
start play_music;      //曲の演奏
while (SENSOR_1 <40)    //曲が流れている間光を探すために左に旋回
{
turn_left;
}
while (SENSOR_1 >50)    //光を見つけたら
{
stop play_music;      //曲を停止させ
go_light;          //光を追いかける 
}
}
}

光源を見失っていないときにはある曲を演奏し、見失った時には別の曲を演奏しながら光源を探すロボ

掲載日:7月25日
制作者:トミー&Hagino

task main()
{
while(true)
#define Do 523   //ド
#define Re 587   //レ
#define Mi 659   //ミ
#define Fa 698   //ファ
#define So 784   //ソ
#define Ra 880   //ラ
#define Si 988   //シ 
task play_music1()   //チャルメラ
{
while(true)
{
     PlayTone(Do,20); Wait(25);
     PlayTone(Re,20); Wait(25);
     PlayTone(Mi,30); Wait(40);
     PlayTone(Re,20); Wait(25);
     PlayTone(Do,30); Wait(45);
     
     PlayTone(Do,20); Wait(25);
     PlayTone(Re,20); Wait(25);      
     PlayTone(Mi,20); Wait(25);
     PlayTone(Re,20); Wait(25);
     PlayTone(Do,20); Wait(25);
     PlayTone(Re,40); Wait(55);
     }
  }
task play_music2()   //きらきら星
{
while(true)
{
     PlayTone(Do,30); Wait(35);
     PlayTone(Do,30); Wait(35);
     PlayTone(So,30); Wait(35);
     PlayTone(So,30); Wait(35);
     PlayTone(Ra,30); Wait(35);
     PlayTone(Ra,30); Wait(35);
     PlayTone(So,40); Wait(50);
     
     PlayTone(Fa,30); Wait(35);
     PlayTone(Fa,30); Wait(35);
     PlayTone(Mi,30); Wait(35);
     PlayTone(Mi,30); Wait(35);
     PlayTone(Re,30); Wait(35);
     PlayTone(Re,30); Wait(35);
     PlayTone(Do,40); Wait(50);
     }
  }
#define light_min 50 //最低光を40
#define light_max 90 //最高光を80
task main()
{
  SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー2を光
  
  while(true)
  {
      Off(OUT_A+OUT_C);  //センサーに反応なしのとき停止
      stop play_music1; 
      stop play_music2;
      if(SENSOR_2<light_min) //センサー2が最低光より少ないとき
      {
          start play_music1; //チャルメラを流す
          stop play_music2;
          OnFwd(OUT_A); //右に旋回
          OnRev(OUT_C);
          until(SENSOR_2>light_min); //センサー2が最低光を超えるまで
      }
      if((SENSOR_2<light_max)&&(SENSOR_2>light_min)) //センサー2が最低光を超え最高光におよばないとき
      {
          stop play_music1; //きらきら星を流す
          start play_music2;
          OnFwd(OUT_A+OUT_C); //前進
          until((SENSOR_2>light_max)||(SENSOR_2<light_min));//センサー2が最低光より少なくなる、または最高光を超えるまで
      }
  }
}

工夫したところ

・最低光と最高光を定義して光の幅をつくった点
・光センサーを左右につけた点
・ロボもプログラミングもシンプルにできた点

反省点

・簡単な曲しかつくれなかった点
・何度も試行錯誤して完璧に仕上げれなかった点
・タイマーとかがいまいち理解できなくて、それを利用できなかった点
・懐中電灯の光にうまく反応しないときがある点
・マシンの外観もいまいち普通な感じの点

感想

・やっぱり曲をつくるのが難しかった。とくに音と音の間隔がいまいちつかめず苦労しました
・こういった光センサーの使い方もあるんだなあと思った
・レポートやらなんやらでロボットに時間を割くことがあまりできなかったのでロボコンではなるべくたくさん集まるようにしたい
・他の課題に比べて課題3はプログラミングがすごく難しかった。曲だけでけっこう時間がかかったのに光センサーはさらに微調整などにてこずった
・まだ理解していないプログラムを早くマスターしてロボコンは完成度の高いロボットを作りたい

掲示板

コメントをどうぞ!!


添付ファイル: file20060726214915.jpg 131件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-08-01 (火) 23:22:27 (4768d)