☆制作者☆ツノハラ
#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); } } }