目次
前
次
アナウンスチャイムのシミュレート
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には、圧電スピーカをつけて
シミュレーションします。
目次
前
次