光を追うプログラム02

☆制作者☆ツノハラ

#define TURN_TIME 600//*一周の時間を定義*
#define mi  659 //*音を定義*
#define fa  698
#define fal  740
#define so  784
#define sol  831
#define ra  880
#define shi  988
#define Do  1047
#define Dol 1109
#define re  1175
#define rel 1245
task play_music01()
{
   while(true)//*音楽01を繰り返し演奏*
   {
      PlayTone(mi,40); Wait(40);
      PlayTone(ra,40); Wait(40);
      PlayTone(sol,40);Wait(40);
      PlayTone(ra,40);Wait(40);
      PlayTone(shi,40);Wait(40);
      PlayTone(Do,40);Wait(40);
      PlayTone(shi,40);Wait(40);
      PlayTone(Do,40);Wait(40);
      PlayTone(re,40);Wait(40);
      PlayTone(mi*2,240);Wait(240);
      PlayTone(so*2,80);Wait(80);
      PlayTone(mi*2,240);Wait(240);
      PlayTone(ra*2,40);Wait(40);
      PlayTone(so*2,40);Wait(40);
      PlayTone(mi*2,160);Wait(200);
      PlayTone(mi*2,40);Wait(40);
      PlayTone(re,40);Wait(40);
      PlayTone(Do,40);Wait(40);
      PlayTone(re,20);Wait(20);
      PlayTone(Do,20);Wait(20);
      PlayTone(ra,200);Wait(200);
      PlayTone(Do,80);Wait(80);
      PlayTone(ra,400);Wait(500);
    }
}
task play_music02()
{
   while(true)//*音楽02を繰り返し演奏*
   {
      PlayTone(so,80); Wait(82);
      PlayTone(fal,20);Wait(20);
      PlayTone(so,20);Wait(20);
      PlayTone(ra,40);Wait(42);
      PlayTone(mi,80);Wait(82);
      PlayTone(re/2,80);Wait(82);
      PlayTone(Do/2,80);Wait(62);
      PlayTone(shi/2,20);Wait(22);
      PlayTone(Do/2,20);Wait(22);
      PlayTone(re/2,40);Wait(42);
      PlayTone(ra/2,160);Wait(162);
      PlayTone(shi/2,80);Wait(82);
      PlayTone(Dol/2,20);Wait(22);
      PlayTone(re/2,40);Wait(42);
      PlayTone(mi,20);Wait(22);
      PlayTone(ra,80);Wait(82);
      PlayTone(re/2,80);Wait(82);
      PlayTone(so,80);Wait(82);
      PlayTone(so,20);Wait(22);
      PlayTone(fal,40);Wait(42);
      PlayTone(mi,20);Wait(22);
      PlayTone(re/2,160);Wait(162);   
   }
}
task main()
{ 
SetSensor(SENSOR_1,SENSOR_LIGHT);//*センサーが光センサーであることを定義*
SetSensor(SENSOR_3,SENSOR_LIGHT);//*上と同じ*
int light_max=0,time_max=0;//*光と時間の最大値を0に設定*
ClearTimer(0);//*タイマーをクリアー
  while(FastTimer(0)<15)//*タイマーの値が小さいと回転して光の最大値と一番明るい場所*
  {                    //*に行くまでの時間を定義*
  OnFwd(OUT_A);OnRev(OUT_C); 
  Wait(TURN_TIME);
  if((SENSOR_1>light_max+50)||(SENSOR_3>light_max+50))//*最大の光を感知したら*
{
  light_max=SENSOR_1;//*光の最大値をセンサー1に定義*
  time_max=FastTimer(0);//*最大に明るい場所までの時間をタイマーに定義*
   }
}
  while(FastTimer(0)>15)//*最大値を定義し終わった後*
{
 start play_music01 ;//*音楽01の演奏をスタート*
Off(OUT_A+OUT_C);
Wait(100);
OnFwd(OUT_A);OnRev(OUT_C);//*最大に明るかったところまで回転*
Wait(time_max);
OnFwd(OUT_A+OUT_C);Wait(100);//*少し前進*
ClearTimer(0);
SetPower(OUT_A,5);//*3個目のwhile文に行くためにモーターの力を変える*
SetPower(OUT_C,5);//*上と同じ*
}
while(OUT_A<6)//*ここから光を追うプログラム*
{
if((SENSOR_1>=60)||(SENSOR_3>=60))//*光が当たっているところだと*
{
start play_music01 ;//*音楽01の演奏を始める*
OnFwd(OUT_A+OUT_C);//*前進*
}
if((SENSOR_1<50)&&(SENSOR_3>60))//*センサー1に当たる光が弱くなると*
{
 OnFwd(OUT_A);//*時計回りに回転*
 OnRev(OUT_C);
}
if((SENSOR_3<50)&&(SENSOR_1>60))//*センサー2に当たる光が弱くなると*
{
OnFwd(OUT_C);//*逆時計回りに回転*
OnRev(OUT_A);
}
if((SENSOR_1<50)&&(SENSOR_3<50))//*センサーに当たる光が両方とも弱いと*
{
  stop play_music01 ;//*音楽01を止める*
  start play_music02 ;//*音楽02を流す*
  OnFwd(OUT_A);//*光を探すため回転*
  OnRev(OUT_C);
  }
}
}

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