はじめに
『MSX0 Stack』付属の IoT BASIC サンプルを『Turbo Pascal』へ移植してみます。
ACCEL.BAS
◆加速度センサ
項目 | 説明 |
---|---|
概要 | Battery Bottom2 の加速度センサの値を取得して表示します |
ファイル名 | ACCEL.BAS |
対応デバイス | M5GO Battery Bottom2 |
コメント | 加速度センサを搭載した M5GO Battery Bottom2 を装着した状態で本体を起動し、プログラムを実行してください。 |
Battery Bottom 2 の加速度センサの値を取得して表示します
製品名が少し正確ではない記述となっています。
Plan B 以外の『MSX0 Stack』には『M5GO Bottom2』が付属し、Plan B には加えて『Core2 Battery Bottom』が付属します。
『Faces II Bottom』を装着している場合にはセンサーが搭載されている『M5GO Bottom2』または『Core2 Battery Bottom』に換装する必要があります。
『Core2 Battery Bottom』を使う場合、小さなフタのようなものにセンサーが付いていますので、これを必ず取り付けてください。
See also:
MSX0 Stack での挙動
ACCEL.BAS
をロードして、
実行してみました。
『MSX0 Stack』を傾けると値が変動します。
プログラムは〔Ctrl〕+〔Stop〕(リモートコントロールパネルからは〔Ctrl〕+〔F12〕)で中断できます。
Turbo Pascal へ移植
別途、SYSUTILS.LIB
と IOT.LIB
が必要です。
program ACCEL;
type
LibStr = string[80];
{$I SYSUTILS.LIB}
{$I IOT.LIB}
var
X, Y, Z: Integer;
begin
ClrScr;
while not KeyPressed do
begin
X := IoTGetInt('device/accel/x');
Y := IoTGetInt('device/accel/y');
Z := IoTGetInt('device/accel/z');
Writeln(X:6, Y:6, Z:6);
end;
end.
実行してみました。
『MSX0 Stack』を傾けると値が変動します。
任意のキーで中断できます。
解説
ループ
GOTO ループを while での無限ループに替え、KeyPressed()
でキー押下を検出して抜けるようにしました。
書き出しパラメータ
Writeln()
の X:6
というのは、書き出しパラメータ というもので、少し特殊な書式設定です。整数型変数 X の表示最小幅を 6 に設定しています (Y と Z も同様)。
See also:
おわりに
今回の移植に関して難しい所は特にありませんでした。