- 低価格コクピットの自作
- DataRefEditor
- プルアップとプルダウン
- Nav1の周波数の設定をロータリーエンコーダで行う
- スロットルコントロール
- イグニッションキーコントロール
- 針路バグコントロール
- 針路バグとエレベータトリムの切り替え
- 回転動作を粗いと微細で設定 & 3つのモードの切り替え
- ギアのアップダウンコントロール
- ロータリーエンコーダの色々な数値の設定
- トグルスイッチコントロール
- ロータリースイッチコントロール
- Teensy&キーボードボタン
- Teensy&ジョイスティックボタン
- プッシュスイッチでトグルを実現
- プッシュスイッチでLEDをONにしたままにする
- Teensy & I2C接続キャラクターLCDモジュール
- 7セグで数字を表示
- X-Plane LED ON/OFF
- マウスホイールの活用
- Scenery
- Plug-in
- blog
- SiteMap
X-Plane コクピットの自作に挑戦!
X-Plane ギアのアップダウンコントロール
6つのLEDを使用して、ギアのアップダウンのコントロールとその様子を見ることにします。
スイッチを切り替えるとギアをアップダウン。6つのLEDで、ギアがどういう状態かを確認。
ギアダウンを開始すると、赤LEDが点灯、完了すると緑LEDが点灯(ギアが降りた状態)。
ギアアップを開始すると、再び赤LEDが点灯、完了すると消灯(収納された状態は全て消灯)、車輪の位置によって少し違っているのが、LED消灯のズレで分かると思います。
つまり、ギアが動作している状態の時、赤LEDが点灯しています。
今回の実際のレイアウトと配線図です。
スイッチを切り替えるとギアをアップダウン。6つのLEDで、ギアがどういう状態かを確認。
ギアダウンを開始すると、赤LEDが点灯、完了すると緑LEDが点灯(ギアが降りた状態)。
ギアアップを開始すると、再び赤LEDが点灯、完了すると消灯(収納された状態は全て消灯)、車輪の位置によって少し違っているのが、LED消灯のズレで分かると思います。
つまり、ギアが動作している状態の時、赤LEDが点灯しています。
今回の実際のレイアウトと配線図です。
スイッチによるギアのアップダウンと、その動作をLEDで見るスケッチ
X-Plane_gearUpDown.ino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | #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
- マウスホイールの活用
- Scenery
- Plug-in
- blog
- SiteMap
Contents