目次

アナウンスチャイムのシミュレート

 OPアンプを利用したアナウンスチャイムを
 持っています。



 動作は、スイッチを押すと「ピンポンパンポン」と
 注意喚起の音を順に出します。

 「ピンポンパンポン」は、音階では、「ドミソド(上のド)」
 になっているので、MMLでシミュレートできます。

 MMLで表現すると、"C4EGC5"となります。

 サブルーチンで、音階を発生すると、以下。

100 @OTO
110 PLAY "C4EGC5"
120 RTN

 IchigoJam基板には、プッシュスイッチが1個ある
 ので、スイッチを押すとアナウンスチャイムが鳴る
 ように、プログラムを書いてみます。

10 ' chaim
20 @LOOP
30 IF BTN() GSB @OTO
40 WAIT 60
50 GOTO @LOOP
60 END
100 @OTO
110 PLAY "C4EGC5"
120 RTN

 ホームセンタやファミリーレストランでのアナウンスチャイムは
 「ピンポンパンポン」に続けて、情報伝達があり、続けて次の
 「ポンパンポンピン」と音階を下げています。

 音階を下げる方のサブルーチンを考えると、以下。

200 @TOT
210 PLAY "C5G4EC"
220 RTN

 ボタンを一度押すごとに、音階を上げるチャイムと
 音階を下げるチャイムを鳴らすようにしてみます。

 動作を変えるために、変数を使い、ボタンを押すと
 変数を増やして、変数により使うサブルーチンを
 かえるようにすれば、うまくいきそう。

 変数Sを使い、ボタンを押したときに、変数Sの値を
 増やして、LSBが0か1で動作を変えます。
 プログラムだと、以下。

10 ' chaim
20 S=0
30 @LOOP
40 IF BTN() GSB @INP
50 WAIT 60
60 GOTO @LOOP
70 END
300 @INP
310 S = S + 1
320 S = S & 1
330 IF S = 1 GSB @OTO
340 IF S = 0 GSB @TOT
350 RTN

 サブルーチンを合体。

10 ' chaim
20 S=0
30 @LOOP
40 IF BTN() GSB @INP
50 WAIT 60
60 GOTO @LOOP
70 END
100 @OTO
110 PLAY "C4EGC5"
120 RTN
200 @TOT
210 PLAY "C5G4EC"
220 RTN
300 @INP
310 S = S + 1
320 S = S & 1
330 IF S = 1 GSB @OTO
340 IF S = 0 GSB @TOT
350 RTN

 IchigoJamには、圧電スピーカをつけて
 シミュレーションします。




目次

inserted by FC2 system