諸々の記録

その時々 興味にある事について

MobiFlight でコントロールパネルの制作(5)

ADF周波数の小数点以下(0.5kHz)を操作するのは、MobiFlightでの設定方法が見つからないのであきらめることにします。

MSFS2020 のセスナ152など、機種によっては設定できないものもありますし、NDBは日本国内でも廃止が進んでいるようです。
(FSUIPC という有料のソフトを使えばできそうだが、これだけのために購入はない)

で、もう一つの課題があり、ADF の周波数の設定パラメータは 1の位、10の位、100の位(100の位は10以上の1000の位も設定可能) に分かれているため、入力モードが 3 つ必要です。
今まで作った周波数入力は H と L の2つだったので対応できません。
これについては、検索したら参考になるものが見つかりました。

この作成例も、私が今作っているものと同じように 4x20 のLCD にエンコーダつけてADFを設定している作例です。(ちなみに、この作例でもADFの周波数の小数点以下の設定は対応しててないです)
このページの下の方にADFの設定説明がありますが、Compare の条件でIFをネストしてます。

Chrome の日本語翻訳で訳すと下記。(google翻訳すげー)
--------------

f(#=0,'^^--',if(#=1,'--^-','---^'))

これは、参照変数adf1Digitが 0 であるかどうかをテストし、 adf1DigitDisplayの値を文字列^^--に変更します。値が 0 でない場合は、同じ変数が「1」であるかどうかをテストし、出力を文字列 --^- に変更します。そうでない場合は、出力を ---^ に変更します。これが完了すると、ロータリーエンコーダーを使用するときに変更される数字を示すマーカーがこの画面上に表示されます。

--------------

これを参考にして、表示スペースを最小にするため、桁位置をマークするのではなく、 H M L の1文字で表示するように下記のように設定。
( set it to のところは if(#=1,'H',if(#=2,'M','L')) と設定)


そして、ADFの入力設定などを行い動作確認。



期待通り動作しました。
ADF の行にある H M L が桁位置を示し、右下の H L が入力モード変更(桁数変更か、値変更)です。
うーん、桁数変更と入力モードがどちらも H L の表示で分かりずらいのでちょっと改善の余地ありですね。

でも、まあ動いたから良し。

ちなみにテストは セスナ 152 でやったため、スタンバイの周波数がなく直接アクティブな周波数を変更します。右の 1035.0 はどこにも表示されないものになります。
セスナ 172 の G1000 ならスタンバイ周波数があるので、右の周波数を設定となります。(アクティブにするには 画面上の ENT ボタンをクリック)