goo

X-Plane11で使用している B737


X-Plane11で利用できるBoeing 737の機体は、最初から入っているデフォルトの B737の他に
x737project
B737-800X ZIBO mod

また、有料では
IXEG 737 Classic

などが有名どころかと思います

最近自分が使用しているのは、Ziboさんという方が製作している B737-800X Zibo mod が中心なのですが
この機体、Ziboさんの活動がすさまじく、だいたい 3日に1回アップデートしてるんじゃないかというくらいのペースで
新しいバージョンがアップデートされてきます

気が付けば、X-Plane11を起動するたびにアップデートしてるんじゃないかというくらいで
自動更新ではないので手動での作業になるのですが、とても更新が追いつきません(苦笑

そんな Ziboさんの B737 ですが、ここで初回のインストール手順とアップデート手順をまとめておこうかと思います




◆Zibo Mod B737のダウンロード

Ziboさんの フォーラムページ に記載があるように、modのアップデートファイルは
こちら の Google Docsにアップロードされているので、最新のバージョンをダウンロードします

Google Docsには、常にいくつかのバージョンがアップロードされているので、最新のファイルをクリック


ファイルの詳細が表示されたら、画面右上のダウンロードアイコンをクリック


ウイルススキャンが出来ない旨の告知が出ますが
「エラーを無視してダウンロード」をクリックするとPCにダウンロードされます

※ ダウンロード後、個別にウイルスチェックを行って、ファイルに問題がないか確認してください


◆FMODのダウンロード

上記のフォーラムでも案内されている、Zibo Mod で利用するサウンドファイルをダウンロードします
FMODも ZiboMod同様、こちらのGoogle Docsにアップロードされています

フォルダがいくつか表示されますが、「RCOMENDED ST...」をクリックします


ファイルは1個だけですが「AXP IMMERSION PA...」をクリック


ファイルの詳細が表示されたら、ZiboMod同様右上のダウンロードボタンをクリックします


こちらもウイルススキャンが出来ない旨表示されますが、そのままダウンロードしてください



◆Zibo Mod B737のインストール

インストールはとても簡単です
ダウンロードした Zibo Modの圧縮フォルダを展開し、出来た「B737-800X」フォルダを X-Plane11の Aircraftフォルダにコピーします
「\X-Plane 11\Aircraft」


続けて、FMODファイルを展開して、中にある「fmod」というフォルダを、Zibo Modフォルダの中にコピーします
「\X-Plane 11\Aircraft\B737-800X」


これでインストールは完了です!

後は、X-Plane11を起動して、航空機の中に新しいB737-800Xが表示されているので、選択して開始します


コックピットが表示されたら、FMCの画面を拡大して Zibo Modと FMODが正しく読み込まれたかを確認します



◆Zibo Mod B737のアップデート

Zibo Modは、アップデートの度にフルバージョンで提供されているので
新しいバージョンへアップデートするときは、Aircraftフォルダの「B737-800X」を削除(または退避)して
新規インストールと同じ手順で新しいフォルダをコピーするだけです

※カスタマイズしたファイルや Plugin等がある場合は、あらかじめそのファイルを退避して
新しいフォルダへコピーするのを忘れないようにしてください
せっかくカスタマイズした設定等が消えてしまうので・・・
コメント ( 0 ) | Trackback ( 0 )

Electric Panel の製作 その8

ロータリースイッチ用の固定版の制作です

最初にバックパネルに固定用のネジ穴を開けるのですが、アクリル板なので強力な助っ人を用意しました!

・・さすがにこのパネルを割るわけにはいかないので、かなり慎重になってます(苦笑

実際削り始めると、鉛筆削りのような削りカスが出てきて面白いですね!
切削面も普通のドリルビットで開けるより綺麗な断面になります

さらに、バックパネルはフロントパネルとピッタリ重なるので、ネジ頭がパネルに埋まるように
リューターでザグリ(?)を作りました

写真の角度だとわかりづらいですが、パネルの面にネジの頭が埋まってます

次にロータリースイッチの固定版ですが、バックパネルに開けた穴の位置に合わせて同じ穴を開け
アクリルカッターでガリガリ削って不要な部分を切り落とします

3mmのアクリル板でしたが、30回くらい削ったところでバリっと切り離せました

固定版をバックパネルに取り付けるとこんな感じです

この角度で見ると違和感ないですが、実は正面から見ると微妙に傾いてます(汗

アクリル用ビットが 6mまでしかなかったので、そこからロータリースイッチのネジ部の軸が通るまで
リューターで削って広げました(若干いびつな形状になりましたが・・・)

角はヤスリで削って丸めて、まあまあうまくできた感じです

バックパネルに取り付けて・・


フロントパネルを合わせてみたところです

スイッチの軸が結構長いので、切断しようかと思ったんですが
間に 2cmのスペーサーを入れて取り付けたところ、ちょうどいい長さになりました

あとは、ロータリースイッチをスイッチ(つまみ)に固定するだけですが
スイッチにあらかじめ埋め込まれている 2個のイモネジを締めることで軸に固定することができます
ただこれ盲点というか、このイモネジをきつく締めた状態のまま使用すると
数年後にスイッチが割れるかもしれません

下の写真は、2012年に制作した DUパネルで使ったスイッチですが、久しぶりに棚から出してみたら見事に割れてました

完成した後、ほとんど使わずに保管していたのですが・・・
左右両方ともほぼ同じ位置で同じ割れ方をしてるので、なにか特性みたいなのがあるんでしょうね

そんなわけで、今回はスイッチの軸に若干穴をあけてイモネジを緩めに締めてみました

他のスイッチ類も取り付けて、やっと本来の ElectricPanelらしくなってきました!
コメント ( 2 ) | Trackback ( 0 )

ロータリースイッチ 8接点スイッチ

OpenCockpitより、8接点のロータリースイッチが届きました

ついでに、スイッチキャップも注文しました

色は青ではなくて黒一色になってました


この 8接点スイッチは、持っていた 12接点スイッチとほぼ同じ大きさ・・・というより
まんま 12接点のスイッチと同じですね、寸法やラッチのキツさも同じです

端子部を見ると・・・

え、12接点?

この8接点スイッチは、12接点のロータリースイッチと全く同じハウジングを使っているみたいです
端子は最初から 4本を折った状態になっていて、有効な接点は 1,2,4,5,7,8,10,11 の 8端子
ツマミを回すとちゃんと 45度回転しているので、確かに合ってます。


そんなわけで、これを使っていこうと思うのですが、このロータリースイッチを固定するための板ですね・・

ElectricPanelのバックパネルにあるネジ穴に合わせると、かなり微妙な形状の板を作ることになりそうです


上部2か所のネジ穴と、真ん中に1つネジ穴を増やして3点止めで固定すればよさそうですが
上部のスペースが狭すぎて割れそうな予感しかしません(汗

もとからあるネジ穴は使わず、新規に固定用の穴を3つ開けて
シンプルに固定する感じでもいいかもしれません

文字が来ない位置にネジ穴をあければ、バックライトも当てられそうです

Fuji3さん案のボックスもありですよね

ちょっとイメージに沿っているかわかりませんが、接着すればネジ穴を意識せずに固定できるので
自由度は高いかもしれません

さて、どうするか・・・
コメント ( 0 ) | Trackback ( 0 )

Electric Panel の製作 その7.1


LEDの表示はだいたい上手くいったので
次はセレクタースイッチのコントロールをやってみようと思います


ElectricPanelのセレクタースイッチは、角度 45度の 8ポジションスイッチなのですが
1回路 8接点のロータリースイッチってあまりないんですね

1回路12接点だとどこでもあるのですが、ぱっと探してみたところ手軽なものは無く
見つかったのは、基板実装タイプのミニロータリースイッチでした

画像:スイッチサイエンス

以前、Hispapanelsで取り扱ってた同系統モデルを購入して DUパネルを作るときに使用したのですが
ラッチが甘めで、くるくる回してるとさらに甘くなってくる感じだったのであまり好きじゃありません

今のところ見つけられたのは OpenCockpitsで扱ってる青軸のスイッチだけのようなので
とりあえずいくつか発注してみました

画像: OpenCockpit

さて到着まで時間があるので、手元にある 12接点のスイッチで一度スイッチの動きを
試してみようかと思ったのですが・・・

改めて見ると、Sismoのバックパネルには、ロータリースイッチを固定できませんでした(汗
通常のトグルスイッチはパネルに固定できるようになっているんですが、ロータリースイッチは固定できないみたいです

スイッチ部分の軸だけが通るようになっていて、ネジ部は入らないので本体が固定できません

パネルに取り付ける方法としては、パネルの穴を大きくしてロータリースイッチのネジ部分ごと貫通させればと考えましたが
パネルはバックパネルとフロントパネルの2枚あるので、そもそもネジ部の長さが足りず表面まで出てこないのと、
スイッチ本体をパネルに密着させてしまうと、あとでバックライトをつけることが出来なくなりそうなんですよね

となると隙間を開けて別の板に固定するしかなさそうですが、ネジの位置が微妙でどうするか悩み中です。。
コメント ( 2 ) | Trackback ( 0 )

Electric Panel の製作 その6


X-Plane11の内部パラメータの取得方法が分かったので、本題の Electric Panelに表示されるパラメータについて調べてみます

今回対象にしているのは「B737 ZIBO MOD ver3.26I」ですが
この機体には、今のところ Electric Panelの DCセレクタに「AUX BAT」がありません

  X-Plane11 ZIBO MOD v3.26I        PMDG 737NGX

Sismoのパネルや PMDG737NGXにはあるので、もしかしたら今後追加されるかもしれませんが
とりあえず今回は、無い状態で進めていきます

まずは DCセレクタで表示す「DC VOLTS」の値を DataRefsToolで探します


最初は「dc_voltmeter_value」が そのままパネルに表示されるのかと思いましたが、そうでもないようです
このパラメータの値が一致するのは、DCセレクタが TR1、TR2、TR3 の時だけでした
DCセレクタを回して、メインバッテリースイッチをON/OFFしたり、STANDBY POWERスイッチをON/OFFに切り替えながら
変化する値を調べて、どのパラメータの数値が表示されているのか探ってみました

DC VOLTS
STBY PWRsim/cockpit2/electrical/battery_voltage_indicated_volts[2]
BAT BUSsim/cockpit2/electrical/battery_voltage_indicated_volts[1]
BATsim/cockpit2/electrical/battery_voltage_indicated_volts[1]
TR1sim/cockpit2/electrical/dc_voltmeter_value
TR2sim/cockpit2/electrical/dc_voltmeter_value
TR3sim/cockpit2/electrical/dc_voltmeter_value
TEST

「BAT BUS」と「BAT」の値が同じでいいのかイマイチ微妙ですが、だいたいこんな感じだと思います
「battery_voltage_indicated_volts」は配列データになっているので、パラメータの後ろの [n] は、カラム番号です

同じように他の数値も順番に調べてみました

DC AMPS
STBY PWR
BAT BUS
BATsim/cockpit2/electrical/battery_amps
TR1sim/cockpit2/electrical/bus_load_amps[1]
TR2sim/cockpit2/electrical/bus_load_amps[2]
TR3sim/cockpit2/electrical/bus_load_amps[3]
TEST

「STBY PWR」「BAT BUS」の時は何も表示されないので、とりあえず割り当て無しにしています

AC VOLTS
STBY PWR不明
GRD PWRlaminar/B738/ac_volt_mode1
GEN1laminar/B738/ac_volt_mode2
APU GENlaminar/B738/ac_volt_mode3
GEN2laminar/B738/ac_volt_mode4
INVlaminar/B738/ac_volt_mode5
TEST

「STBY PWR」にセットした時の AC VOLTSのパラメータは今のところ見つけられていません
「laminar/B738/ac_volt_mode0」というパラメータが無いので、別の値だと思うのですが・・・

AC AMPS
STBY PWR
GRD PWRsim/cockpit/electrical/gpu_amps
GEN1sim/cockpit2/electrical/generator_amps[1]
APU GENsim/cockpit2/electrical/APU_generator_amps
GEN2sim/cockpit2/electrical/generator_amps[2]
INV
TEST

地上電源を接続した状態で、ACセレクタを「GRD PWR」にしたときの「AC AMPS」表示は
現在のバージョンのB737 ZIBO MODでは表示されないようです

ちなみに PMDG737NGXの場合、同じ状態で ACセレクタを「GRD PWR」の位置にすると電流が表示されます

PMDG737NGX

ただ DataRefsの中に「gpu_amps」というパラメータがあり、[GRD PWR]スイッチを ONにすると数値が上がり
[GRD PWR]をOFFにすると 0 になるため、内部的にはこの値が該当すると予想して一応割り当ててみました


CPS FREQ
STBY PWRlaminar/B738/ac_freq_mode0
GRD PWRlaminar/B738/ac_freq_mode1
GEN1laminar/B738/ac_freq_mode2
APU GENlaminar/B738/ac_freq_mode3
GEN2laminar/B738/ac_freq_mode4
INVlaminar/B738/ac_freq_mode5
TEST

「CPS FREQ」はそのままのパラメータが用意してあるので、これを割り当てるだけで良さそうです


次に、スイッチ類のパラメータです
AC、DC各セレクタがどの位置にあるかで表示する値を変化させる必要があるので、これらの数値も必須です
DC SELECTlaminar/B738/knob/dc_power
AC SELECTlaminar/B738/knob/ac_power

最後にMAINTボタンのパラメータもありました
この機体では MAINTボタンを押したときの動きは再現されませんが、ボタンを押したことが分かれば
Arduino側でそれっぽい動きはできそうです
MAINTlaminar/B738/push_button/acdc_maint


まだ「STBY PWR」時の「AC VOLTS」のみまだわかっていませんが
とりあえず現状わかっているパラメータのみで、ArdSimXで使えるようにしてみます

ArdSimX側のコンフィグですが、今回も ArdSimXのWEBサイトは使わず、
直接コンフィグファイル「data.cfg」を書き換えます
@ ================= CONFIG =================

*1-0U
[O]
1 3 laminar/B738/knob/dc_power
2 3 sim/cockpit2/electrical/battery_voltage_indicated_volts 1
3 3 sim/cockpit2/electrical/battery_voltage_indicated_volts 2
4 3 sim/cockpit2/electrical/dc_voltmeter_value
5 3 sim/cockpit2/electrical/battery_amps
6 3 sim/cockpit2/electrical/bus_load_amps 1
7 3 sim/cockpit2/electrical/bus_load_amps 2
8 3 sim/cockpit2/electrical/bus_load_amps 3
10 3 laminar/B738/knob/ac_power
11 3 laminar/B738/ac_freq_mode0
12 3 laminar/B738/ac_freq_mode1
13 3 laminar/B738/ac_freq_mode2
14 3 laminar/B738/ac_freq_mode3
15 3 laminar/B738/ac_freq_mode4
16 3 laminar/B738/ac_freq_mode5
17 3 laminar/B738/ac_volt_mode0
18 3 laminar/B738/ac_volt_mode1
19 3 laminar/B738/ac_volt_mode2
20 3 laminar/B738/ac_volt_mode3
21 3 laminar/B738/ac_volt_mode4
22 3 laminar/B738/ac_volt_mode5
23 3 sim/cockpit2/electrical/APU_generator_amps
24 3 sim/cockpit2/electrical/generator_amps 1
25 3 sim/cockpit2/electrical/generator_amps 2
26 3 sim/cockpit/electrical/gpu_amps


Arduinoに、これに対応したスケッチを書いていきます
//---------------------------------------------
// ardSimX and MAX7219
//---------------------------------------------

#include < LedControl.h >
#include < ArdSimX.h >

// Arduino I/Oピン定義
// 12: DataIn(DIN)
// 11: CLK
// 10: LOAD(CS)

// 2個のMAX7219を使用
LedControl lc = LedControl(12, 11, 10, 2);

int ELEC_DC_SELECT = 0;
int ELEC_AC_SELECT = 0;
float ELEC_DC_AMPS[6] = {0,0,0,0,0,0};
float ELEC_DC_VOLTS[6] = {0,0,0,0,0,0};
float ELEC_CPS_FREQ[6] = {0,0,0,0,0,0};
float ELEC_AC_VOLTS[6] = {0,0,0,0,0,0};
float ELEC_AC_AMPS[6] = {0,0,0,0,0,0};


void setup() {

  // MAX7219 初期設定
  for (int index=0; index < lc.getDeviceCount(); index++) {
    lc.shutdown(index, false);
    lc.setIntensity(index, 4);
    lc.clearDisplay(index);
  }
  
  // ardSimX 初期設定
  BoardNumber 1;
}

void loop() {
  ArdSimScan;
}

// Electric Panel LED表示
void ElecPanelDigit(int digit, float value) {
  char characters[3];

  // "value" が 999 ならブランク
  if ( value == 999 ) {
    characters[2] = " ";
    characters[1] = " ";
    characters[0] = " ";
  } else {
    // 整数のみ Char型に変換
    dtostrf(value, 3, 0, characters);    
  }

  int dan = 0;
  if ( digit > 5 ) {
    dan = 1;
    digit = digit-6;
  }

  lc.setChar(dan, digit,       characters[2], false);
  lc.setChar(dan, (digit + 1), characters[1], false);
  lc.setChar(dan, (digit + 2), characters[0], false);

}

// ArdSimX Option
void ProgOut(byte id, float val) {
  switch (id) {
    case 1:
      ELEC_DC_SELECT = val;

      // DC SELECT is "STBY PWR"
      if ( ELEC_DC_SELECT == 0 ) {
        ElecPanelDigit( 3, 999 );
        ElecPanelDigit( 12, ELEC_DC_VOLTS[0] );

      // DC SELECT is "BAT BUS"
      } else if ( ELEC_DC_SELECT == 1 ) {
        ElecPanelDigit( 3, 999 );
        ElecPanelDigit( 12, ELEC_DC_VOLTS[1] );

      // DC SELECT is "BAT"
      } else if ( ELEC_DC_SELECT == 2 ) {
        ElecPanelDigit( 3, ELEC_DC_AMPS[2] );
        ElecPanelDigit( 12, ELEC_DC_VOLTS[1] );

      // DC SELECT is "TR1"
      } else if ( ELEC_DC_SELECT == 3 ) {
        ElecPanelDigit( 3, ELEC_DC_AMPS[3] );
        ElecPanelDigit( 12, ELEC_DC_VOLTS[3] );

      // DC SELECT is "TR2"
      } else if ( ELEC_DC_SELECT == 4 ) {
        ElecPanelDigit( 3, ELEC_DC_AMPS[4] );
        ElecPanelDigit( 12, ELEC_DC_VOLTS[3] );

      // DC SELECT is "TR3"
      } else if ( ELEC_DC_SELECT == 5 ) {
        ElecPanelDigit( 3, ELEC_DC_AMPS[5] );
        ElecPanelDigit( 12, ELEC_DC_VOLTS[3] );

      // DC SELECT is "TEST"
      } else if ( ELEC_DC_SELECT == 6 ) {
        ElecPanelDigit( 3, 999 );
        ElecPanelDigit( 12, 999 );
      }
      break;
    case 2:
      ELEC_DC_VOLTS[1] = val;
      if ( ELEC_DC_SELECT == 1 || ELEC_DC_SELECT == 2 ) {
        ElecPanelDigit( 12, ELEC_DC_VOLTS[1] );
      }
      break;
    case 3:
      ELEC_DC_VOLTS[0] = val;
      if ( ELEC_DC_SELECT == 0 ) {
        ElecPanelDigit( 12, ELEC_DC_VOLTS[0] );
      }
      break;
    case 4:
      ELEC_DC_VOLTS[3] = val;
      if ( ELEC_DC_SELECT == 3 || ELEC_DC_SELECT == 4 || ELEC_DC_SELECT == 5 ) {
        ElecPanelDigit( 12, ELEC_DC_VOLTS[3] );
      }
      break;
    case 5:
      ELEC_DC_AMPS[2] = val;
      if ( ELEC_DC_SELECT == 2 ) {
        ElecPanelDigit( 3, ELEC_DC_AMPS[2] );
      }
      break;
    case 6:
      ELEC_DC_AMPS[3] = val;
      if ( ELEC_DC_SELECT == 3 ) {
        ElecPanelDigit( 3, ELEC_DC_AMPS[3] );
      }
      break;
    case 7:
      ELEC_DC_AMPS[4] = val;
      if ( ELEC_DC_SELECT == 4 ) {
        ElecPanelDigit( 3, ELEC_DC_AMPS[4] );
      }
      break;
    case 8:
      ELEC_DC_AMPS[5] = val;
      if ( ELEC_DC_SELECT == 5 ) {
        ElecPanelDigit( 3, ELEC_DC_AMPS[5] );
      }
      break;
    case 10:
      ELEC_AC_SELECT = val;

      // AC SELECT is "STBY PWR"
      if ( ELEC_AC_SELECT == 0 ) {
        ElecPanelDigit( 0, ELEC_CPS_FREQ[0] );
        ElecPanelDigit( 6, ELEC_AC_VOLTS[0] );
        ElecPanelDigit( 9, 999 );

      // AC SELECT is "GRD PWR"
      } else if ( ELEC_AC_SELECT == 1 ) {
        ElecPanelDigit( 0, ELEC_CPS_FREQ[1] );
        ElecPanelDigit( 6, ELEC_AC_VOLTS[1] );
        ElecPanelDigit( 9, ELEC_AC_AMPS[1] );

      // AC SELECT is "GEN1"
      } else if ( ELEC_AC_SELECT == 2 ) {
        ElecPanelDigit( 0, ELEC_CPS_FREQ[2] );
        ElecPanelDigit( 6, ELEC_AC_VOLTS[2] );
        ElecPanelDigit( 9, ELEC_AC_AMPS[2] );

      // AC SELECT is "APU GEN"
      } else if ( ELEC_AC_SELECT == 3 ) {
        ElecPanelDigit( 0, ELEC_CPS_FREQ[3] );
        ElecPanelDigit( 6, ELEC_AC_VOLTS[3] );
        ElecPanelDigit( 9, ELEC_AC_AMPS[3] );

      // AC SELECT is "GEN2"
      } else if ( ELEC_AC_SELECT == 4 ) {
        ElecPanelDigit( 0, ELEC_CPS_FREQ[4] );
        ElecPanelDigit( 6, ELEC_AC_VOLTS[4] );
        ElecPanelDigit( 9, ELEC_AC_AMPS[4] );

      // AC SELECT is "INV"
      } else if ( ELEC_AC_SELECT == 5 ) {
        ElecPanelDigit( 0, ELEC_CPS_FREQ[5] );
        ElecPanelDigit( 6, ELEC_AC_VOLTS[5] );
        ElecPanelDigit( 9, 999 );

      // AC SELECT is "TEST"
      } else if ( ELEC_AC_SELECT == 6 ) {
        ElecPanelDigit( 0, 999 );
        ElecPanelDigit( 6, 999 );
        ElecPanelDigit( 9, 999 );
      }
      break;
    case 11:
      ELEC_CPS_FREQ[0] = val;
      if ( ELEC_AC_SELECT == 0 ) {
        ElecPanelDigit( 0, ELEC_CPS_FREQ[0] );
      }
      break;
    case 12:
      ELEC_CPS_FREQ[1] = val;
      if ( ELEC_AC_SELECT == 1 ) {
        ElecPanelDigit( 0, ELEC_CPS_FREQ[1] );
      }
      break;
    case 13:
      ELEC_CPS_FREQ[2] = val;
      if ( ELEC_AC_SELECT == 2 ) {
        ElecPanelDigit( 0, ELEC_CPS_FREQ[2] );
      }
      break;
    case 14:
      ELEC_CPS_FREQ[3] = val;
      if ( ELEC_AC_SELECT == 3 ) {
        ElecPanelDigit( 0, ELEC_CPS_FREQ[3] );
      }
      break;
    case 15:
      ELEC_CPS_FREQ[4] = val;
      if ( ELEC_AC_SELECT == 1 ) {
        ElecPanelDigit( 0, ELEC_CPS_FREQ[4] );
      }
      break;
    case 16:
      ELEC_CPS_FREQ[5] = val;
      if ( ELEC_AC_SELECT == 1 ) {
        ElecPanelDigit( 0, ELEC_CPS_FREQ[5] );
      }
      break;
    case 17:
      ELEC_AC_VOLTS[0] = val;
      if ( ELEC_AC_SELECT == 0 ) {
        ElecPanelDigit( 6, ELEC_AC_VOLTS[0] );
      }
      break;
    case 18:
      ELEC_AC_VOLTS[1] = val;
      if ( ELEC_AC_SELECT == 1 ) {
        ElecPanelDigit( 6, ELEC_AC_VOLTS[1] );
      }
      break;
    case 19:
      ELEC_AC_VOLTS[2] = val;
      if ( ELEC_AC_SELECT == 2 ) {
        ElecPanelDigit( 6, ELEC_AC_VOLTS[2] );
      }
      break;
    case 20:
      ELEC_AC_VOLTS[3] = val;
      if ( ELEC_AC_SELECT == 3 ) {
        ElecPanelDigit( 6, ELEC_AC_VOLTS[3] );
      }
      break;
    case 21:
      ELEC_AC_VOLTS[4] = val;
      if ( ELEC_AC_SELECT == 4 ) {
        ElecPanelDigit( 6, ELEC_AC_VOLTS[4] );
      }
      break;
    case 22:
      ELEC_AC_VOLTS[5] = val;
      if ( ELEC_AC_SELECT == 5 ) {
        ElecPanelDigit( 6, ELEC_AC_VOLTS[5] );
      }
      break;
    case 23:
      ELEC_AC_AMPS[3] = val;
      if ( ELEC_AC_SELECT == 3 ) {
        ElecPanelDigit( 9, ELEC_AC_AMPS[3] );
      }
      break;
    case 24:
      ELEC_AC_AMPS[2] = val;
      if ( ELEC_AC_SELECT == 2 ) {
        ElecPanelDigit( 9, ELEC_AC_AMPS[2] );
      }
      break;
    case 25:
      ELEC_AC_AMPS[4] = val;
      if ( ELEC_AC_SELECT == 4 ) {
        ElecPanelDigit( 9, ELEC_AC_AMPS[4] );
      }
      break;
    case 26:
      ELEC_AC_AMPS[1] = val;
      if ( ELEC_AC_SELECT == 1 ) {
        ElecPanelDigit( 9, ELEC_AC_AMPS[1] );
      }
      break;
  }
}

ざっくりとこんな感じでしょうか
行頭のInclude分は、ブログ用にカッコにスペースを入れてますが実際は隙間なしで書きます

Arduinoに保存したら、早速 X-Plane11を起動し、接続してみました

とりあえず意図通りに数値が取得できたようです

一応、動画も撮ってみました

X-Plane11側の ElectricPanelに表示される数値は、小数点以下1桁で出るようですが
自作した ElectricPanelに表示される数値は、四捨五入した整数で出しています
コメント ( 0 ) | Trackback ( 0 )
« 前ページ