B747-400 auto-pilot cockpit of X-Plane スイッチランプ(LED)

B747-400 auto-pilot cockpit of X-Plane スイッチランプ(LED)

2025年3月20日

スイッチランプ(LED)

スイッチを入れたら点灯する白いランプ、LEDランプ内臓のスイッチがあれば最高ですが、価格も良いので、私はスイッチの上でLEDを点灯させるようにしています。
ここではTeensyのピンを直接使って点灯させますが、LEDが多いとすぐにピンが不足してしまいます。その時は後述しますが74HC595のシフトレジスタを使うとピンをいくらでも増やせて便利です。

この回路も簡単な回路で、330Ω位の抵抗を入れるだけです。
このLEDは、スイッチを入れたら点灯という簡単なものではなく、datarefから数値を読みとっているので、他のスイッチとも連動して点灯したり、消灯したりします。
実際にX-Planeを動作させながら、その動きをよく観察してスケッチを完成する必要があり、意外と大変な作業になります。X-Planeの画面で点灯/消灯は確認できるので無理してこれを実装する必要はないのかもしれませんが、これが全て完璧に点灯・消灯をするとやったーという感じになります。ぜひ挑戦してみてください。

B747-400 SPDスイッチのLEDランプ(Teensyのピンはどれでも可)

const int SPDSwLedPin = 11;            //LED出力ピン番号の宣言
FlightSimInteger SPDSwLED;         //X-PlaneのLEDと接続
  
void setup() {
  pinMode(SPDSwLedPin, OUTPUT);         //LEDのピンを出力に指定
  
  SPDSwLED = XPlaneRef("sim/cockpit2/autopilot/speed_status");
    SPDSwLED.onChange(updateSPDSwLED);
}
  
void loop() {
  FlightSim.update();      // X-Planeの変更を受信するようにする
}  
 
// LED関係の実行プログラム
void updateSPDSwLED(long value) {
  if (value == 0) { 
    // すべてのLEDが消灯する 
    digitalWrite(SPDSwLedPin, LOW);
  } else {        
    // すべてのLEDを点灯 
    digitalWrite(SPDSwLedPin, HIGH);
  }
}

その他のスイッチランプで使用されているdataref
一応、上のスケッチと入れ替えるdetarefを下記に上げてみましたが、そのまま上のスケッチと入れ替えてもランプが動作するのもあるが、動作しないものもあります。
つまり、複雑に絡んでいるのでこれだけではダメなんです。
このやり方ではピンがいくらあっても足らないということで、これ以上詳しい各パーツの説明は止めときます。
実際には、74HC595というシフトレジスターのICを使用して実現しています。これは1つのチップで8つのピンを追加できます。最初だけはTeensyと繋ぐために3ピンを必要としますが、後はどんどん繋いで行けるのでピン不足の場合はこれが必要でしょう。
これについては、74HC595というシフトレジスタを使用で説明しています。
但し、このLEDをON/OFFする簡単な動作だけなら大丈夫ですが、複雑な動きをするものは、私の実力では無理でした。

THR:sim/cockpit2/autopilot/autothrottle_on
SPD:sim/cockpit/autopilot/airspeed_mode
L NAV:sim/cockpit/autopilot/mode_hnav
V NAV:sim/cockpit2/autopilot/vnav_status(未確認)
FL CH:sim/cockpit/autopilot/airspeed_mode
HOLD(HDG):sim/cockpit/autopilot/heading_mode
V/S:sim/cockpit/autopilot/altitude_mode
HOLD(ALT) 白ランプ:sim/cockpit/autopilot/altitude_mode
HOLD(ALT) オレンジランプ:sim/cockpit/autopilot/altitude_mode
LOC:sim/cockpit/autopilot/mode_hnav
APP:sim/cockpit/autopilot/mode_gls
A/P ENGAGE:sim/cockpit2/autopilot/flight_director_mode