X-Plane コクピットの自作に挑戦!
X-Plane ギアのアップダウンコントロール
6つのLEDを使用して、ギアのアップダウンのコントロールとその様子を見ることにします。
スイッチを切り替えるとギアをアップダウン。6つのLEDで、ギアがどういう状態かを確認。
ギアダウンを開始すると、赤LEDが点灯、完了すると緑LEDが点灯(ギアが降りた状態)。
ギアアップを開始すると、再び赤LEDが点灯、完了すると消灯(収納された状態は全て消灯)、車輪の位置によって少し違っているのが、LED消灯のズレで分かると思います。
つまり、ギアが動作している状態の時、赤LEDが点灯しています。
今回の実際のレイアウトと配線図です。
スイッチを切り替えるとギアをアップダウン。6つのLEDで、ギアがどういう状態かを確認。
ギアダウンを開始すると、赤LEDが点灯、完了すると緑LEDが点灯(ギアが降りた状態)。
ギアアップを開始すると、再び赤LEDが点灯、完了すると消灯(収納された状態は全て消灯)、車輪の位置によって少し違っているのが、LED消灯のズレで分かると思います。
つまり、ギアが動作している状態の時、赤LEDが点灯しています。
今回の実際のレイアウトと配線図です。
スイッチでギアのアップダウンを行ない、ギアがアップした時は赤LEDが点灯、ダウンのときは緑LEDが点灯
スイッチによるギアのアップダウンと、その動作をLEDで見るスケッチ
X-Plane_gearUpDown.ino
#include <Bounce.h> //////////////////////////////////////// // Hardware input // const int gearSwitchPin = 14; Bounce gearSwitch = Bounce (gearSwitchPin, 5); //////////////////////////////////////// // Hardware output // const int greenLeftPin = 10; const int greenNosePin = 11; const int greenRightPin = 13; const int redLeftPin = 21; const int redNosePin = 18; const int redRightPin = 17; //////////////////////////////////////// // X-Plane input and output // // Landing gear handle commands FlightSimCommand gearUp; FlightSimCommand gearDown; // Landing gear actual position FlightSimFloat gearDeployLeft; FlightSimFloat gearDeployNose; FlightSimFloat gearDeployRight; // Landing gear handle position FlightSimInteger gearHandleDown; // Aircraft essential bus voltage FlightSimFloat supplyVolts; void setup() { ////////////////// // Input // pinMode (gearSwitchPin, INPUT_PULLUP); ////////////////// // Output // pinMode(greenLeftPin, OUTPUT); pinMode(greenNosePin, OUTPUT); pinMode(greenRightPin, OUTPUT); pinMode(redLeftPin, OUTPUT); pinMode(redNosePin, OUTPUT); pinMode(redRightPin, OUTPUT); ////////////////// // X-Plane // gearUp = XPlaneRef("sim/flight_controls/landing_gear_up"); gearDown = XPlaneRef("sim/flight_controls/landing_gear_down"); gearDeployLeft = XPlaneRef("sim/flightmodel2/gear/deploy_ratio[1]"); gearDeployNose = XPlaneRef("sim/flightmodel2/gear/deploy_ratio[0]"); gearDeployRight = XPlaneRef("sim/flightmodel2/gear/deploy_ratio[2]"); gearHandleDown = XPlaneRef("sim/cockpit2/controls/gear_handle_down"); supplyVolts = XPlaneRef("sim/cockpit2/electrical/bus_volts[0]"); } void loop() { FlightSim.update(); gearSwitch.update(); ////////////////// // Process input // // blocking input on gear handle position if(gearSwitch.read() == LOW) { // if the switch is closed if (gearHandleDown == 0) { // if gear handle is up gearDown.once(); // move it down } } else { if (gearHandleDown == 1) { // if gear handle is down gearUp.once(); // move it up } } // gearSwitch ////////////////// // Process output // // we need 10V and the sim to be running to light the LEDs bool canLight = (supplyVolts > 10.0) && FlightSim.isEnabled(); // light red LEDs if gear handle and position disagree and we have power digitalWrite(redLeftPin, (gearHandleDown != gearDeployLeft) && canLight); digitalWrite(redNosePin, (gearHandleDown != gearDeployNose) && canLight); digitalWrite(redRightPin, (gearHandleDown != gearDeployRight) && canLight); // light green LEDs if gear down and we have power digitalWrite(greenLeftPin, (gearDeployLeft == 1.0) && canLight); digitalWrite(greenNosePin, (gearDeployNose == 1.0) && canLight); digitalWrite(greenRightPin, (gearDeployRight == 1.0) && canLight); }
5〜12行目が繋ぐピンの位置です。
CoarseEnc_A = 10,
CoarseEnc_B = 9,
FineEnc_A = 5,
FineEnc_B = 6,
ModeSwitchPin = 20,
HdgModeLED = 15,
Nav1OBSLED = 13,
ElevTrimLED = 14
CoarseEnc_A = 10,
CoarseEnc_B = 9,
FineEnc_A = 5,
FineEnc_B = 6,
ModeSwitchPin = 20,
HdgModeLED = 15,
Nav1OBSLED = 13,
ElevTrimLED = 14
- 低価格コクピットの自作
- DataRefEditor
- プルアップとプルダウン
- Nav1の周波数の設定をロータリーエンコーダで行う
- スロットルコントロール
- イグニッションキーコントロール
- 針路バグコントロール
- 針路バグとエレベータトリムの切り替え
- 回転動作を粗いと微細で設定 & 3つのモードの切り替え
- ギアのアップダウンコントロール
- ロータリーエンコーダの色々な数値の設定
- トグルスイッチコントロール
- ロータリースイッチコントロール
- Teensy&キーボードボタン
- Teensy&ジョイスティックボタン
- プッシュスイッチでトグルを実現
- プッシュスイッチでLEDをONにしたままにする
- Teensy & I2C接続キャラクターLCDモジュール
- 7セグで数字を表示
- X-Plane LED ON/OFF
- マウスホイールの活用
- B 737-800
- B747-400
- B 777 Worldliner
- SiteMap
Contents