LoginSignup
0
0

【MSX0】BUZZER.PAS【Turbo Pascal】

Last updated at Posted at 2024-01-21

はじめに

Seeed 社の 『Grove Beginner Kit for Arduino』 のセンサーのうち、MSX0 の IoT BASIC のサンプルがないものを『Turbo Pascal』で動作させてみます。

BUZZER

パッシブブザー [D5] を鳴らします。パッシブブザーはアクティブブザーとは異なり、電圧を掛ければ鳴るものではなく、矩形波を出力しないと鳴りません。要はスピーカーです。

See also:

MSX0 Stack での挙動

まず事前にモジュールをつないでおきます。MSX0 側は Port B (黒) に接続します。

image.png

センサー 接続方法 Grove ポート
[D5] BUZZER Digital Port B (黒色)

上段左から 2 つ目のモジュールがパッシブブザーです。シルク印刷は裏にあります。

image.png

GROVE ケーブルの修正 (クロスケーブルの作成)

MSX0 でパッシブブザーを鳴らすためには、GROVE ケーブルの黄色と白の線を入れ替える必要があります。

image.png

マイナスの精密ドライバー (100 均で買えます) でコネクタのツメを持ち上げながら線を引っ張ると、ピンを抜く事ができます。

image.png

Grove ケーブルの片方のコネクタの黄色と白の線を入れ替えてください。奥までカチっと差し込んで、線を軽く引っ張って抜けなければ OK です。ツメを持ち上げすぎるとコネクタが破損しますので注意してください。

ピン ケーブル モジュール Port B
1 SIG I
2 NC O
3 VCC V
4 GND G

モジュールのパッシブブザーは Pin1 (外側: 黄色) に接続されていますが、MSX0 Stack Port B の出力ピンは Pin2 (内側: 白色) となっているため、線を入れ替える必要があります。

image.png

付属の Grove ケーブルを 1, 2 本、クロス接続にしておくとよいでしょう。コネクタを任意の色のマーカーペンで着色しておくと誤接続防止になります。

See also:

MSX-BASIC のコード

MSX-BASIC でブザーを鳴らすコードについては HRA! さんの資料 (6.3. ブザー) を参考にしてください。

Turbo Pascal のコード

別途、SYSUTILS.LIBIOT.LIB が必要です。

BUZZER.PAS
program BUZZER;
type
  LibStr = string[80];
{$I SYSUTILS.LIB}
{$I IOT.LIB}
begin
  while not KeyPressed do
  begin
    IoTPutInt('device/analog/out', 4000);
    Delay(1789);
    IoTPutInt('device/analog/out', 0);
    Delay(894);
  end;
end.

実行して耳を澄ますと微かにブザーが繰り返し 2 秒間鳴っているのを確認できます。

任意のキーで中断できます。

解説

本来、パッシブブザーはもっと大きな音で鳴るのですが、MSX0 では PWM がサポートされていないので、この程度の音を出すのが精一杯です。PWM がサポートされていないのに何故音が鳴るのかと言うと、MSX0 の device/analog/out が本物の (?) アナログ出力ではなく PWM だからです (恐らく ESP32 の ledc が使われている)。

矛盾しているようですが、要は PWM を細かくコントロールしてパッシブブザーを鳴らせるような機能が (現状の) MSX0 には実装されていないという事です。

See also:

おわりに

まぁ、音を鳴らすだけなら MSX 側の音を鳴らせばいいんですけどね。

See also:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0