路線バス運転シミュレータ開発記

OMSIを使って路線バスの運転シミュレータを製作しています。備忘録的にゆるーく書いていきたいと思いますので、お付き合いいただければ幸いです。

出力ポートの割り当て

さて、Arduinoの動作を実際に確認できたところで、次はボードの各ピンにどのような出力を割り当てるか決める必要があります。
Arduinoボードには大きく分けて、アナログ出力ポート、アナログ入力ポート、デジタル入出力ポートの3つがありますが、KOMSIで使用するのはアナログ出力ポートとデジタル入出力ポートになります。
アナログ出力ポートについては、PWMでサーボ―モーターを制御して実車の計器を動かし、デジタル入出力ポートについては単にON/OFFの2値しか扱いませんので主にインジケータランプを点滅します。
KOMSIのつくりとしては、アナログ出力ポートについてはピン番号が決め打ちになっており、各ピンに接続する計器がすでに割り当てられているのに対し、デジタル入出力ポートについてはOMSI内部の変数値をどのピンに割り当てるか、OPLというファイルで定義できるようになっています。

f:id:poplar1930:20210615015907j:plain

■アナログ出力ポートの割り当て

[03]空気圧計
[05]エンジン温度計 (水温計とは別のようです)
[06]水温計
[09]速度計
[10]油圧計
[11]燃料計
[12]エンジン回転計

※[]内はピン番号


さて、デジタル入出力ポートについては、KOMSIに付属していたOFK.exeというツールを使用してOPLファイルを作成します。
まず、デフォルトの画面表示がドイツ語になっていて使いづらいので、メニューから[Sprache]-[English]を選択して英語表示にします。

f:id:poplar1930:20210615020008p:plain

このツールの使い方は簡単で、左側の[possible indicator lights]からOMSI内部の変数名を選択して、右側の任意のピン番号のところにドラッグ&ドロップするだけです。なお、文字が灰色になっているところは予約されているピン番号なので新たに定義することはできません。
例えば、"battery"を特定のピンに定義したとすると、メインスイッチをONにしたときにそのピンはON、エンジンがかかるとOFFになります。
また、すべての内部変数が[possible indicator lights]にあるわけではないので、別途必要なものが出てきたときはメニューの[indicatorlights database]-[Edit]から編集用のダイアログボックスを開きます。
ダイアログボックスが表示されたら、[New]ボタンをクリックし以下の情報を入力します。

f:id:poplar1930:20210615020045p:plain

(1)には英語選択時の[possible indicator lights]で表示する名称を入力します。任意の文字列で問題ありません。
(2)にはドイツ語選択時の[possible indicator lights]で表示する名称を入力します。任意の文字列で問題ありません。
(3)にはOMSIの内部変数名を入力します。例えば、ウインカーの右であれば"lights_blinker_r"と入力します。この内部変数については車両データ内で定義されているため、詳細については車両データを解析する必要があります。

※私の場合、ドイツ語は使用しないので(1)と(2)は同じ文字列を入れています。

入力が完了したら[Save]ボタンをクリックします。保存されたことを示すメッセージボックスが出ますので[OK]をクリックして追加完了です。
前の画面に戻る場合は[Cancel]ボタンをクリックし、再度[possible indicator lights]を確認するとさきほど追加した内部変数名が表示されていると思います。

全てのピンに割り当てが完了したらOPLファイルを作成します。作成はメニューの[File]-[Create OPL file]をクリックするとダイアログが表示されるのでファイル名を入力して[Save]をクリックします。
これでOPLファイルの作成は完了です。作成したOPLファイルはOFK.exeがあるフォルダに"OPL Creator Files"というフォルダがあるのでそこに保存されます。