演奏ロボットのプログラム
#define Do 523 //周波数を定義 #define Re 587 #define Mi 659 #define Fa 698 #define So 784 #define Ra 880 #define Si 988 #define hDo 1047 #define dSo 392 #define dSi 494 #define sSo 831 task play_music_A() // 音楽を演奏するタスク { while (true) { PlayTone(Re,45);Wait(50); //曲は FF9のOP PlayTone(Mi,15);Wait(20); //音をならす時間よりも PlayTone(Fa,30);Wait(35); //待機時間を長くすることで PlayTone(So,30);Wait(35); //音がつながらないようにしている PlayTone(Ra,90);Wait(95); PlayTone(Si,15);Wait(20); PlayTone(hDo,15);Wait(20); PlayTone(Si,30);Wait(35); PlayTone(Ra,30);Wait(35); PlayTone(So,45);Wait(50); PlayTone(Ra,15);Wait(20); PlayTone(Fa,30);Wait(35); PlayTone(Mi,30);Wait(35); PlayTone(Re,60);Wait(65); PlayTone(Re,45);Wait(50); PlayTone(Mi,15);Wait(20); PlayTone(Fa,30);Wait(35); PlayTone(So,30);Wait(35); PlayTone(Ra,90);Wait(95); PlayTone(Si,15);Wait(20); PlayTone(hDo,15);Wait(20); PlayTone(Si,30);Wait(35); PlayTone(Ra,30);Wait(35); PlayTone(Ra,30);Wait(35); PlayTone(sSo,30);Wait(35); PlayTone(Ra,90);Wait(120); } } task play_music_B() // 音楽を演奏するタスク { while (true) { PlayTone(dSo,15);Wait(20); //曲はスピッツの空も飛べるはず PlayTone(Do,15);Wait(20); PlayTone(Re,15);Wait(20); PlayTone(Mi,30);Wait(35); PlayTone(Mi,30);Wait(35); PlayTone(Re,15);Wait(20); PlayTone(Mi,15);Wait(20); PlayTone(Fa,30);Wait(35); PlayTone(Mi,45);Wait(50); PlayTone(Do,15);Wait(20); PlayTone(Do,60);Wait(65); PlayTone(Ra,30);Wait(35); PlayTone(Ra,30);Wait(35); PlayTone(dSi,15);Wait(20); PlayTone(Do,15);Wait(20); PlayTone(Re,15);Wait(20); PlayTone(Ra,15);Wait(20); PlayTone(Ra,15);Wait(20); PlayTone(So,15);Wait(20); PlayTone(Mi,15);Wait(20); PlayTone(So,30);Wait(35); PlayTone(Fa,15);Wait(20); PlayTone(Fa,15);Wait(20); PlayTone(So,15);Wait(20); PlayTone(Ra,45);Wait(50); PlayTone(Re,15);Wait(20); PlayTone(Re,45);Wait(50); PlayTone(dSo,15);Wait(20); } } task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); start play_music_A ; // 演奏を開始 OnFwd(OUT_A); // 前進 until (SENSOR_1 == 1); // タッチセンサーが押されるまで待つ stop play_music_A ; // 演奏を停止 start play_music_B ; // 演奏を開始 OnRev(OUT_A); // 後進 }
コメント
写真はタッチセンサーを取り付ける前のもの。 ロボット本体にはあまり工夫がいらなかったけれど、 モーターを一つしか使ってはいけないというところが今までとは違ったので、 ちょっと考えどころでした。 精密さが求められているわけではなかったので、 タイヤではなく、兼ねてからやってみたかったキャタピラを採用。 一方プログラムの方については、「空も飛べるはず」はもっと長くするはずだったので、 少し早めのテンポで演奏させてみました。 時間があったら、もっと切りの良いところまで書きたかったなあ〜。 あと、この時は使わなかったけれども、 (後にロボコンのマシンで使用してもらっちゃいました。笑) ドラクエのレベルUPの音を作って、 RCXからエンドレスで流して遊んでみたり。 すっごい勢いでレベル上がりました。。。うちの子。
おまけ---ドラゴンクエスト Lv.up 効果音--- #define Fa 698 #define So 784 #define fMi 622 task play_music() { while (true) { PlayTone(Fa,10);Wait(14); PlayTone(Fa,10);Wait(14); PlayTone(Fa,10);Wait(14); PlayTone(Fa,12);Wait(28); PlayTone(fMi,12);Wait(28); PlayTone(So,12);Wait(28); PlayTone(Fa,45);Wait(60); } } task main() { start play_music ; }