B747-400 auto-pilot cockpit of X-Plane
トグルスイッチ

一番簡単な配線とArduinoのスケッチで実現できますが、完全に動作をシュミレーションできません。スイッチのON/OFFは問題ないのですが、A/P EMGAGEスイッチが切れると、このスイッチも自動的に切れます。この自動でOFFになるという連携動作が実現できないのです。スイッチにサーボでも付けると出来るのでしょうが、値段も高価になるし、現実的ではありません。これだけはスイッチの位置はあんまり気にしないことです。プッシュスイッチでLEDを点灯/消灯するという方法がいいかもしれません。
![Teensy_ToggleSW.fzz - Fritzing - [ブレッドボード ビュー]](files/teensy_togglesw.fzz---fritzing---005b30d5309930ec30c330c8309930db309930fc30c83099-30d2309930e530fc005d.jpg)
本来ならば、プルアップやプルダウンを使った回路になるのですが、Teensy内蔵のプルアップ抵抗を使用するのでここでは抵抗は一切使用しません。従って超簡単な回路になるのです。
その代わり、スケッチで必ず pinMode(FDSwPin, INPUT_PULLUP); の INPUT_PULLUP というオプションを指定します。
B747-400 FDスイッチのスケッチ(Teensyのピンはどれでも可)
#include <Bounce.h> const int FDSwPin = 1; Bounce FDSwitch = Bounce (FDSwPin, 5); FlightSimInteger FlightDirector; void setup() { pinMode (FDSwPin, INPUT_PULLUP); FlightDirector = XPlaneRef("sim/cockpit2/autopilot/flight_director_mode"); } void loop() { FlightSim.update(); FDSwitch.update(); if(FDSwitch.read() == LOW) { // スイッチがLOWの状態のとき FlightDirector = 1; //「ダウン」位置にギアハンドルを移動させます } else { // スイッチがLOWの状態でないとき FlightDirector = 0; //「アップ」位置にギアハンドルを移動させます } }