ジュニアレスキューのルールでは、被災者を発見したら、ランプを光らせることになっています。 でも、良く分かるように音を鳴らすチームも結構います。 Team「M&Y」もそうしていました。
しかし、今期からNXTに乗り換えたMのTeam「co-LINK」のロボットは、音がなりません。
なぜならNXCで音を鳴らす命令が面倒くさいからです。
というか・・・メンターの私も分っていませんでした。
NXCで音を鳴らすのは
PlayTone関数を使用します。 このパラメータに音階(frequency)と長さ(duration)を指定します。
で、例えば、ドを1.0秒間演奏するには
PlayTone( 1047 , 1000 );
とするのですが・・・この命令を実行しても、音が鳴り終わるまで待つことはなく、すぐに次の命令を実行します。
ですので、
task main( )
{
PlayTone( 1047 , 1000 );
}
というプログラムを実行しても、音が鳴らずに処理を終了してしまいます。
ちゃんと1.0秒間音を鳴らすのであれば
task main( )
{
PlayTone( 1047 , 1000 );
Wait( 1000 );
}
としなければなりません。
で、先に進めると・・・ ドレミと演奏するには。
PlayTone( 1047 , 1000 ); Wait( 1000 );
PlayTone( 1175 , 1000 ); Wait( 1000 );
PlayTone( 1318 , 1000 ); Wait( 1000 );
としますが、いちいち音階(というか周波数)を調べて書かなければなりません。
(これはさすがに暗記出来ないよね。)
BricxCCには Brick Piano というツールがあり、それを利用すると簡単に音を出す命令を書くことができることが分かりました・・・それは次回