X-Plane B777 Woldliner Arduinoプログラミング
このプロジェクト、X-Plane B777 WoldlinerのオートパイロットーコックピットパネルのArduinoプログラムです。
このまま、コピーしてArduinoに貼り込んだら使えます。
ただし、TeensyControlsプラグインとArduinoにTeensyduinoをインストールが完了していることが必要です。

このプラグラムはまだ完全ではありません。後、問題としてLEDの点灯/消灯が非常に複雑でまだ完璧に動作していません。
是非皆さんも勉強のつもりでバグの修正をお願いします。それでよかったら、このプログラムを使っていただきたいとおもいます。
Boing 777 Worldliner Auto Pilot.ino
2018年11月14日更新:いいところまでいってますが、完璧ではありません。LEDの点灯に多少問題あり。

  //B777Wordliner(X-Plane 11)専用。 HDGエンコーダの回転で10と違っているところがある
  //2018年9月10日作成スタート
  //teensy++2.0 用
  
  #include <Encoder.h>
  #include <Bounce.h>
  #include <LedControl.h>
  
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  /////////// 74HC595(LED表示)シフトレジスタ 共通スクリプト ///////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  int SER_dataPin = 43;   //pin 14(DS-data) on the 75HC595
  int RCLK_latchPin = 44;  //pin 12(ST_CP-latch) on the 75HC595
  int SRCLK_clockPin = 45; //pin 11(SH_CP-clock) on the 75HC595

  #define number_of_74hc595s 3    //シフトレジスタ74HC595の数
  #define numOfRegisterPins number_of_74hc595s * 8    //ここは変更しないこと
  boolean registers[numOfRegisterPins];  //上のレジスタの数を反映させる共通スクリプト
  
  void clearRegisters(){
    for(int i = numOfRegisterPins - 1; i >=  0; i--){
       registers[i] = LOW;  //最初にLEDを全消灯するため(LOWは全点灯)、
                           //確認の為にスタート時にLEDをON,完全にX-Planeが起動したらOFFになる。
    }
  }

  void writeRegisters(){
    digitalWrite(RCLK_latchPin, LOW);
    for(int i = numOfRegisterPins - 1; i >=  0; i--){
      digitalWrite(SRCLK_clockPin, LOW);
      int val = registers[i];
      digitalWrite(SER_dataPin, val);
      digitalWrite(SRCLK_clockPin, HIGH);
    }
    digitalWrite(RCLK_latchPin, HIGH);
  }
  // 個々のピンをHIGかLOWに設定する
  void setRegisterPin(int index, int value){  //indexでピン位置、valueでLOWかHIGH
    registers[index] = value;
  }
  // 共通ここまで ///////////////////////////////
  
  elapsedMillis inactivityTimeout;// 無活動タイムアウト
  
  
  /////////////////////////////////////////////////////////////////////////
  /////////// スイッチ Teensy 直結ピン ///////////
  /////////////////////////////////////////////////////////////////////////
  //####### 左パネル Part-A ##########
  //===============================================================================================
  /////////// Part-A F/D トグルスイッチ //////////////////
  //===============================================================================================
  const int FDSwPin = 0;
  Bounce FDir_toggle_switch = Bounce(FDSwPin, 5);    //teensy 0ピンを使用
  FlightSimInteger FlightDirector;
  //===============================================================================================
  /////////// Part-A A/T ARM トグルスイッチ //////////////////
  //===============================================================================================
  const int ATarmSwPin = 1;
  Bounce ATarmSwitch = Bounce(ATarmSwPin, 5);
  FlightSimInteger AutoThrottleARM;
  //===============================================================================================
  /////////// Part-A A/P プッシュスイッチ //////////////////
  //===============================================================================================
  const int APSwPin = 2;
  Bounce APSwitch = Bounce(APSwPin, 5);
  FlightSimInteger AutoPilotSW;
  //===============================================================================================
  /////////// Part-A CLB CON プッシュスイッチ /////////////////
  //===============================================================================================
  const int CLBCON_SwPin = 3;
  int CLBCON_SwPin_val = 0;       //入力ピンの状態がこの変数(val)に記憶される
  int CLBCON_SwPin_old_val = 0;   //valの前の値を保存しておく変数
  int CLBCON_SwPin_state = 0;     //LEDの状態(0ならオフ、1ならオン) 
  FlightSimInteger CLBCON_SW;
  //===============================================================================================
  /////////// Part-A A/T プッシュスイッチ //////////////////
  //===============================================================================================
  const int AT_SwPin = 4;
  int AT_SwPin_val = 0; 
  int AT_SwPin_old_val = 0; 
  int AT_SwPin_state = 0;
  FlightSimInteger AT_SW;
  //===============================================================================================
  /////////// Part-A LNAV プッシュスイッチ //////////////////
  //===============================================================================================
  const int LNAV_SwPin = 5;
  int LNAV_SwPin_val = 0;
  int LNAV_SwPin_old_val = 0;
  int LNAV_SwPin_state = 0;
  FlightSimInteger LNAV_SW;
  //===============================================================================================
  /////////// Part-A VNAV プッシュスイッチ //////////////////
  //===============================================================================================
  const int VNAV_SwPin = 6;
  int VNAV_SwPin_val = 0;
  int VNAV_SwPin_old_val = 0; 
  int VNAV_SwPin_state = 0;
  FlightSimInteger VNAV_SW;
  //===============================================================================================
  /////////// Part-A FLCH プッシュスイッチ //////////////////
  //===============================================================================================
  const int FLCH_SwPin = 7;
  int FLCH_SwPin_val = 0;       //入力ピンの状態がこの変数(val)に記憶される 
  int FLCH_SwPin_old_val = 0;   //valの前の値を保存しておく変数 
  int FLCH_SwPin_state = 0;     //LEDの状態(0ならオフ、1ならオン) 
  FlightSimInteger FLCH_SW;
  //===============================================================================================
  /////////// Part-A IAS MACH チェンジ プッシュスイッチ //////////////////
  //===============================================================================================
  const int IAS_MACHchenge_SwPin = 8;
  int IAS_MACHchenge_SwPin_val = 0; 
  int IAS_MACHchenge_SwPin_old_val = 0; 
  int IAS_MACHchenge_SwPin_state = 0; 
  FlightSimInteger IAS_MACH_airspeed;
  FlightSimInteger IAS_MACHchenge_SW;
  //===============================================================================================
  /////////// Part-A AirSeed エンコーダ //////////////////
  //===============================================================================================
  const int AirSpEncR_pin = 9;      //エンコーダ teensy9ピンを使用
  const int AirSpEncL_Pin = 10;     //エンコーダ teensy10ピンを使用
  Encoder AirSpEnc(AirSpEncR_pin, AirSpEncL_Pin);  
  short AirSpEncPrev = 0;  //エンコーダの逆回転
  FlightSimInteger AirSpeed;        
  FlightSimInteger AirSpeedknob;    //AirSpeedのノブを回転させるためだけの専用
  //===============================================================================================
  /////////// Part-A AirSeed エンコーダ プッシュスイッチ //////////////////
  //===============================================================================================
  const int AirSpeed_EncPush_SwPin = 11;
  int AirSpeed_EncPush_SwPin_val = 0; 
  int AirSpeed_EncPush_SwPin_old_val = 0; 
  int AirSpeed_EncPush_SwPin_state = 0; 
  FlightSimInteger AirSpeed_EncPush_SW;
  
  //####### 中央パネル Part-B ##########
  //===============================================================================================
  /////////// Part-B TOGA タクトスイッチ //////////////////
  //===============================================================================================
  const int TOGA_SwPin = 12;
  int Toga_SwPin_val = 0;           //入力ピンの状態がこの変数(val)に記憶される 
  int Toga_SwPin_old_val = 0;       //valの前の値を保存しておく変数 
  int Toga_SwPin_state = 0;         //LEDの状態(0ならオフ、1ならオン) 
  FlightSimInteger TOGA_SW;
  //===============================================================================================
  /////////// Part-B DISC タクトスイッチ //////////////////
  //===============================================================================================
  const int DISK_SwPin = 13;
  int DISK_SwPin_val = 0;
  int DISK_SwPin_old_val = 0;
  int DISK_SwPin_state = 0;
  FlightSimInteger DISK_SW;
  //===============================================================================================
  /////////// Part-B HDG HOLD タクトスイッチ //////////////////
  //===============================================================================================
  const int HDG_HOLD_SwPin = 14;
  int HDG_HOLD_SwPin_val = 0; 
  int HDG_HOLD_SwPin_old_val = 0; 
  int HDG_HOLD_SwPin_state = 0;
  FlightSimInteger HDG_HOLD_SW;
  //===============================================================================================
  /////////// Part-B 不明 タクトスイッチ //////////////////
  //===============================================================================================
  //このスイッチ何に使うのかまったく不明。でも一応動作している。
  const int Unknown_SwPin = 15;
  int Unknown_SwPin_val = 0;
  int Unknown_SwPin_old_val = 0;
  int Unknown_SwPin_state = 0;
  FlightSimInteger Unknown_SW;
  //===============================================================================================
  /////////// Part-B HDG TRK 切り替えスイッチ //////////////////
  //===============================================================================================
  const int HDG_TRKchange_SwPin = 16;
  int HDG_TRKchange_SwPin_val = 0;         //入力ピンの状態がこの変数(val)に記憶される 
  int HDG_TRKchange_SwPin_old_val = 0;     //valの前の値を保存しておく変数 
  int HDG_TRKchange_SwPin_state = 0;       //LEDの状態(0ならオフ、1ならオン) 
  FlightSimInteger HDG_TRKchange_SW;
  //===============================================================================================
  /////////// Part-B HDG BANK LIMIT 6モード切り替え スイッチ //////////////////
  //===============================================================================================
  int BankLimit_SwPin = 17;
  Bounce BankLimit_modeSwitchPin = Bounce (BankLimit_SwPin, 5);
  FlightSimInteger BankLimit_Cange;
  int prev;
 
  // モードの設定
  enum Modes {
    BankLimit_0_Mode, 
    BankLimit_1_Mode,
    BankLimit_2_Mode,
    BankLimit_3_Mode,
    BankLimit_4_Mode,
    BankLimit_5_Mode, 
    Mode_Count         //これで自動的に6つのモードを持つことになる
  };
  int mode = 0; 
  //===============================================================================================
  /////////// Part-B HDG ENC エンコーダ //////////////////
  //===============================================================================================
  const int HdgEncR_rotationPin = 18;       //エンコーダ teensy18ピンを使用
  const int HdgEncEncL_rotationPin = 19;    //エンコーダ teensy19ピンを使用
  Encoder HdgEnc(HdgEncR_rotationPin,HdgEncEncL_rotationPin);  //X-Plane10は回転が逆になっているので左右を入れ替える
  short HdgEncPrev = 0;
  FlightSimInteger headingBug;
  FlightSimInteger headingBugKnob;
  //===============================================================================================
  /////////// Part-B HDG エンコーダ プッシュスイッチ //////////////////
  //===============================================================================================
  const int HDG_EncPush_SwPin = 20;
  int HDG_EncPush_SwPin_val = 0;       //入力ピンの状態がこの変数(val)に記憶される 
  int HDG_EncPush_SwPin_old_val = 0;   //valの前の値を保存しておく変数 
  int HDG_EncPush_SwPin_state = 0;     //LEDの状態(0ならオフ、1ならオン) 
  FlightSimInteger HDG_EncPush_SW;
  
  //####### 右パネル Part-C ##########
  //===============================================================================================
  /////////// Part-C V/S FPA タクトスイッチ //////////////////
  //===============================================================================================
  const int VS_FPA_SwPin = 21;
  int VS_FPA_SwPin_val = 0;
  int VS_FPA_SwPin_old_val = 0;
  int VS_FPA_SwPin_state = 0; 
  FlightSimInteger VS_FPA_SW;
  //===============================================================================================
  /////////// Part-C ALT HOLD タクトスイッチ //////////////////
  //===============================================================================================
  const int ALT_HOLD_SwPin = 22;
  int ALT_HOLD_SwPin_val = 0; 
  int ALT_HOLD_SwPin_old_val = 0; 
  int ALT_HOLD_SwPin_state = 0; 
  FlightSimInteger ALT_HOLD_SW;
  //===============================================================================================
  /////////// Part-C APP タクトスイッチ //////////////////
  //===============================================================================================
  const int APP_SwPin = 23;
  int APP_SwPin_val = 0;
  int APP_SwPin_old_val = 0;
  int APP_SwPin_state = 0;
  FlightSimInteger APP_SW;
  //===============================================================================================
  /////////// Part-C LOC タクトスイッチ //////////////////
  //===============================================================================================
  const int LOC_SwPin = 24;
  int LOC_SwPin_val = 0;
  int LOC_SwPin_old_val = 0;
  int LOC_SwPin_state = 0;
  FlightSimInteger LOC_SW;
  //===============================================================================================
  /////////// Part-C V/S FPA 切り替えスイッチ //////////////////
  //===============================================================================================
  const int VS_FRA_change_SwPin = 25;
  int VS_FRA_change_SwPin_val = 0; //入力ピンの状態がこの変数(val)に記憶される 
  int VS_FRA_change_SwPin_old_val = 0; //valの前の値を保存しておく変数 
  int VS_FRA_change_SwPin_state = 0; //LEDの状態(0ならオフ、1ならオン) 
  FlightSimInteger VS_FRA_change_SW;
  //===============================================================================================
  /////////// Part-C AUTO 1000 セレクトスイッチ //////////////////)
  //===============================================================================================
  const int AUTO_1000_changeSwPin = 26;
  int AUTO_1000_changeSwPin_val = 0; 
  int AUTO_1000_changeSwPin_old_val = 0; 
  int AUTO_1000_changeSwPin_state = 0; 
  FlightSimInteger AUTO_1000_changeSW;
  //===============================================================================================
  /////////// Part-C Teensyの電圧がONになっているかを確認 //////////////////
  //===============================================================================================
  const int Teensy_Pawer_ON_LED_Pin = 27;
  
  //===============================================================================================
  /////////// Part-C V/S ENC エンコーダ //////////////////
  //===============================================================================================
  const int VSpEncR_rotationPin = 28;    //エンコーダ teensy28ピンを使用
  const int VSpEncL_rotationPin = 29;    //エンコーダ teensy29ピンを使用
  Encoder VSpEnc = Encoder(VSpEncR_rotationPin, VSpEncL_rotationPin);   
  short VSpEncPrev = 0xaa;               //0xaaで下2桁の数字を0にする。エンコーダの逆回転
  FlightSimInteger VerticalSpeed;        //バーチカルスピード数値を取得するために使用
  FlightSimInteger VSpeedKnob;           //エンコーダのノブを回すためだけに使用
  //===============================================================================================
  /////////// Part-C ALT ENC エンコーダ //////////////////
  //===============================================================================================
  const int AltEncR_rotationPin = 30;    //エンコーダ teensy28ピンを使用
  const int AltEncL_rotationPin = 31;    //エンコーダ teensy28ピンを使用
  Encoder AltEnc = Encoder(AltEncR_rotationPin, AltEncL_rotationPin);    
  short AltEncPrev = 0xaa;               //0xaaで下2桁の数字を0にする。エンコーダの逆回転
  FlightSimInteger Altitude;             //高度数値を取得するために使用
  FlightSimInteger AltKnob;              //エンコーダのノブを回すためだけに使用
  //===============================================================================================
  /////////// Part-C ALTTUDE エンコーダ プッシュスイッチ //////////////////
  //===============================================================================================
  const int ALT_EncPush_SwPin = 32;
  int ALT_EncPush_SwPin_val = 0;         //入力ピンの状態がこの変数(val)に記憶される 
  int ALT_EncPush_SwPin_old_val = 0;     //valの前の値を保存しておく変数 
  int ALT_EncPush_SwPin_state = 0;       //LEDの状態(0ならオフ、1ならオン) 
  FlightSimInteger ALT_EncPush_SW;
  






  
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  /////////// LED表示(74HC595)シフトレジスタ経由 ///////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  //複雑な動きをするLEDの点灯/消灯のためにこの宣言を特別に別枠で作成している。
  FlightSimInteger Ap_Mode;
  FlightSimInteger At_mode;
  FlightSimInteger Fd_Visible;
  FlightSimInteger Pitch_Mode_Armed;
  FlightSimInteger Pitch_Mode_Engaged;
  FlightSimInteger Roll_Mode_Armed;
  FlightSimInteger Roll_Mode_Engaged;
  FlightSimInteger Warn_Flags;

  //####### 左パネル Part-A ##########
  //==============================================================================================
  /////////// Part-A LED表示(74HC595)シフトレジスタ A/P ランプ//////////////////
  //==============================================================================================
  const int AP_74HC595_Pin = 0;
  FlightSimInteger AutoPilotSwLED;               //1番パネLED
  //==============================================================================================
  /////////// Part-A LED表示(74HC595)シフトレジスタ A/T ランプ//////////////////
  //==============================================================================================
  const int AT_74HC595_Pin = 1;
  FlightSimInteger AutothrottleEngageSwLED;      //1番パネLED 
  //==============================================================================================
  /////////// Part-A LED表示(74HC595)シフトレジスタ LNAV ランプ //////////////////
  //==============================================================================================
  const int LNAV_74HC595_Pin = 2; 
  FlightSimInteger LateralNavSwLED;
  //==============================================================================================
  /////////// Part-A LED表示(74HC595)シフトレジスタ VNAV ランプ //////////////////
  //==============================================================================================
  const int VNAV_74HC595_Pin = 3;
  FlightSimInteger VerticalNavSwLED;
  //==============================================================================================
  /////////// Part-A LED表示(74HC595)シフトレジスタ FLCH ランプ //////////////////
  //==============================================================================================
  const int FLCH_74HC595_Pin = 4;
  FlightSimInteger FlightLevelChangeSwLED; 
  
  //####### 中央パネル Part-B ##########
  //==============================================================================================
  /////////// Part-B LED表示(74HC595)シフトレジスタ BANK LIMIT 6モード切り替え ランプ //////////////////
  //==============================================================================================
  const int bankAUTO_74HC595_Pin = 5;
  const int bank5_74HC595_Pin = 6;
  const int bank10_74HC595_Pin = 7;
  const int bank15_74HC595_Pin = 8;
  const int bank20_74HC595_Pin = 9;
  const int bank25_74HC595_Pin = 10;
  FlightSimInteger BankLimit_chengeLED;
  //===============================================================================================
  /////////// Part-B LED表示(74HC595)シフトレジスタ TOGA ランプ //////////////////
  //===============================================================================================
  const int Toga_74HC595_Pin = 11;
  FlightSimInteger TogaSwLED;
  
  ///これは実際は点灯しないのでいらないがLEDを付けてしまったので、瞬間点灯を行うようにする。
  //===============================================================================================
  /////////// Part-B LED表示(74HC595)シフトレジスタ DISC ランプ //////////////////
  //===============================================================================================
  const int Disk_74HC595_Pin = 12;
  FlightSimInteger DiskSwLED;
  //===============================================================================================
  /////////// Part-B LED表示(74HC595)シフトレジスタ HDG HOLD ランプ //////////////////
  //===============================================================================================
  const int HDG_HOLD_74HC595_Pin = 13;
  FlightSimInteger HeadingTrackHoldSwLED;
  
  //####### 右パネル Part-C ##########
  //===============================================================================================
  /////////// Part-C LED表示(74HC595)シフトレジスタ V/S FPA らんぷ //////////////////
  //===============================================================================================
  const int VS_FPA_74HC595_Pin = 14;
  FlightSimInteger VsFpaReferenceSwLED;
  //==============================================================================================
  /////////// Part-C LED表示(74HC595)シフトレジスタ ALT HOLD ランプ //////////////////
  //==============================================================================================
  const int ALT_HOLD_74HC595_Pin = 15;
  FlightSimInteger AltitudeHoldSwLED; 
  //==============================================================================================
  /////////// Part-C LED表示(74HC595)シフトレジスタ LOC ランプ //////////////////
  //==============================================================================================
  const int LOC_74HC595_Pin = 16;
  FlightSimInteger LocalizerSwLED; 
  //==============================================================================================
  /////////// Part-C LED表示(74HC595)シフトレジスタ APP ランプ //////////////////
  //==============================================================================================
  const int APP_74HC595_Pin = 17;
  FlightSimInteger ApproachSwLED;
  //==============================================================================================
  /////////// Part-C LED表示(74HC595)シフトレジスタ AUTO/1000チェンジ ランプ //////////////////
  //==============================================================================================
  const int upAUTO_74HC595_Pin = 18;
  const int up1000_74HC595_Pin = 19;
  FlightSimInteger AUTO_1000_chengeLED;
  


 

void setup() {
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  // setup内 シフトレジスタ  共通スクリプト //
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  pinMode(SER_dataPin, OUTPUT);
  pinMode(RCLK_latchPin, OUTPUT);
  pinMode(SRCLK_clockPin, OUTPUT);
  clearRegisters();  //すべてのレジスタピンをリセット
  writeRegisters();
  // 共通スクリプト ここまで ////////////////////////////////////////////////////////////////////////////////
  
  
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  /////////// setup内 スイッチ Teensy 直結ピン //////////////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  //####### 左パネル Part-A ##########
  //===============================================================================================
  /////////// setup内 Part-A F/D トグルスイッチ //////////////////
  //===============================================================================================
  pinMode(FDSwPin, INPUT_PULLUP);
  FlightDirector = XPlaneRef("anim/34/switch");
  //===============================================================================================
  /////////// setup内 Part-A A/T ARM トグルスイッチ //////////////////
  //===============================================================================================
  pinMode(ATarmSwPin, INPUT_PULLUP);                  
  AutoThrottleARM = XPlaneRef("anim/33/switch"); 
  //===============================================================================================
  /////////// setup内 Part-A A/P タクトスイッチ //////////////////
  //===============================================================================================
  pinMode(APSwPin, INPUT_PULLUP);
  AutoPilotSW = XPlaneRef("anim/13/button");
  //===============================================================================================
  /////////// setup内 Part-A CLB CON タクトスイッチ //////////////////
  //===============================================================================================
  pinMode(CLBCON_SwPin, INPUT_PULLUP); //BUTTONは入力に設定 
  CLBCON_SW = XPlaneRef("anim/14/button");
  //===============================================================================================
  /////////// setup内 Part-A A/T タクトスイッチ //////////////////
  //===============================================================================================    
  pinMode(AT_SwPin, INPUT_PULLUP); //BUTTONは入力に設定 
  AT_SW = XPlaneRef("anim/15/button");
  //===============================================================================================
  /////////// setup内 Part-A IAS MACH 切り替えスイッチ ////////////////// 
  //===============================================================================================
  pinMode(IAS_MACHchenge_SwPin, INPUT_PULLUP);

  IAS_MACHchenge_SW = XPlaneRef("anim/19/button");
  //初期設定
  IAS_MACHchenge_SW = 1;
  //===============================================================================================
  /////////// setup内 Part-A エアースピード エンコーダ  //////////////////
  //===============================================================================================
  pinMode(AirSpEncR_pin, INPUT_PULLUP);  //エンコーダ
  pinMode(AirSpEncL_Pin, INPUT_PULLUP);  //エンコーダ
    AirSpeed = XPlaneRef("T7Avionics/ap/spd_act");  //encoder
    AirSpeedknob = XPlaneRef("anim/1/spacial");  //ノブを回転させるだけのために
  //===============================================================================================
  /////////// setup内 Part-A エアースピード エンコーダ プッシュスイッチ  //////////////////
  //===============================================================================================
  pinMode(AirSpeed_EncPush_SwPin, INPUT_PULLUP); //BUTTONは入力に設定 
  AirSpeed_EncPush_SW = XPlaneRef("anim/186/button");
  //===============================================================================================
  /////////// setup内 Part-A LNAV タクトスイッチ  //////////////////
  //============================================================================================
  pinMode(LNAV_SwPin, INPUT_PULLUP); //BUTTONは入力に設定 
  LNAV_SW = XPlaneRef("anim/16/button");
  //===============================================================================================
  /////////// setup内 Part-A VNAV タクトスイッチ  //////////////////
  //============================================================================================
  pinMode(VNAV_SwPin, INPUT_PULLUP); //BUTTONは入力に設定 
  VNAV_SW = XPlaneRef("anim/17/button");
  //===============================================================================================
  /////////// setup内 Part-A FLCH タクトスイッチ  //////////////////
  //============================================================================================
  pinMode(FLCH_SwPin, INPUT_PULLUP); //BUTTONは入力に設定 
  FLCH_SW = XPlaneRef("anim/18/button");
  
  //####### 中央パネル Part-B ########## 
  //===============================================================================================
  /////////// setup内 Part-B TOGA タクトスイッチ //////////////////コマンドを使用
  //===============================================================================================
  pinMode(TOGA_SwPin, INPUT_PULLUP);
  TOGA_SW = XPlaneRef("anim/149/button");               //下段左
  //===============================================================================================
  /////////// setup内 Part-B DISC タクトスイッチ //////////////////コマンドを使用
  //===============================================================================================
  pinMode(DISK_SwPin, INPUT_PULLUP);
  DISK_SW = XPlaneRef("anim/176/button");         //違ったらこれ 777/at_disc
  //===============================================================================================
  /////////// setup内 Part-B 謎のタクトスイッチ //////////////////コマンドを使用
  //===============================================================================================
  pinMode(Unknown_SwPin, INPUT_PULLUP);
  Unknown_SW = XPlaneRef("anim/20/button");         //違ったらこれ 777/at_disc
  //===============================================================================================
  /////////// setup内 Part-B HDG TRK 切り替えスイッチ //////////////////
  //===============================================================================================
  pinMode(HDG_TRKchange_SwPin, INPUT_PULLUP); 
  HDG_TRKchange_SW = XPlaneRef("anim/21/button");
  //===============================================================================================
  /////////// setup内 Part-B HDG エンコーダ  //////////////////
  //=============================================================================================== 
  pinMode(HdgEncR_rotationPin, INPUT_PULLUP);  //エンコーダ
  pinMode(HdgEncEncL_rotationPin, INPUT_PULLUP);  //エンコーダ
  headingBug = XPlaneRef("T7Avionics/ap/hdg_act");  //エンコーダ
  headingBugKnob = XPlaneRef("anim/2/spacial");  //ノブを回転させるだけのために
  //===============================================================================================
  /////////// setup内 Part-B HDG エンコーダ プッシュスイッチ  //////////////////
  //=============================================================================================
  pinMode(HDG_EncPush_SwPin, INPUT_PULLUP); 
  HDG_EncPush_SW = XPlaneRef("anim/173/button");  //スタート時は0が本当
  HDG_EncPush_SW = 0;  //何故かこれが1になってしまうので強制的にスタートは0にする。
  //===============================================================================================
  /////////// setup内 Part-B HDG BANK LIMIT 切り替えスイッチ //////////////////
  //===============================================================================================
  pinMode(BankLimit_SwPin, INPUT_PULLUP);
  BankLimit_Cange = XPlaneRef("anim/68/switch");
  //===============================================================================================
  /////////// setup内 Part-B HDG HOLD タクトスイッチ //////////////////
  //===============================================================================================
  pinMode(HDG_HOLD_SwPin, INPUT_PULLUP); 
  HDG_HOLD_SW = XPlaneRef("anim/22/button");
  
  //####### 右パネル Part-C ##########
  //===============================================================================================
  /////////// setup内 Part-C V/S FPA 切り替えスイッチ //////////////////
  //===============================================================================================
  pinMode(VS_FRA_change_SwPin, INPUT_PULLUP); 
  VS_FRA_change_SW = XPlaneRef("anim/23/button");
  //===============================================================================================
  /////////// setup内 Part-C V/S エンコーダ //////////////////
  //===============================================================================================
  pinMode(VSpEncR_rotationPin, INPUT_PULLUP);    //右回転エンコーダ
  pinMode(VSpEncL_rotationPin, INPUT_PULLUP);    //左回転エンコーダ
  VerticalSpeed = XPlaneRef("T7Avionics/ap/vs_act");    //encoder
  VSpeedKnob = XPlaneRef("anim/3/spacial");  //ノブを回転させるだけのために
  //===============================================================================================
  /////////// setup内 Part-C V/S FPA タクトスイッチ //////////////////
  //===============================================================================================
  pinMode(VS_FPA_SwPin, INPUT_PULLUP); 
  VS_FPA_SW = XPlaneRef("anim/24/button");
  //===============================================================================================
  /////////// setup内 Part-C AUTOと1000の切り替えスイッチ //////////////////
  //==============================================================================================
  pinMode(AUTO_1000_changeSwPin, INPUT_PULLUP); 
  AUTO_1000_changeSW = XPlaneRef("anim/69/switch");
  //===============================================================================================
  /////////// setup内 Part-C ALTTUDE エンコーダ //////////////////
  //===============================================================================================
  pinMode(AltEncR_rotationPin, INPUT_PULLUP);    //右回転エンコーダ
  pinMode(AltEncL_rotationPin, INPUT_PULLUP);    //左回転エンコーダ
  Altitude = XPlaneRef("T7Avionics/ap/alt_act");    //encoder
  AltKnob = XPlaneRef("anim/4/spacial");  //ノブを回転させるだけのために
  //===============================================================================================
  /////////// setup内 Part-C ALTTUDE エンコーダ プッシュ(タクト)スイッチ //////////////////
  //==============================================================================================
  pinMode(ALT_EncPush_SwPin, INPUT_PULLUP); 
  ALT_EncPush_SW = XPlaneRef("anim/184/button");
  //===============================================================================================
  /////////// setup内 Part-C ALT HOLD タクトスイッチ //////////////////
  //==============================================================================================
  pinMode(ALT_HOLD_SwPin, INPUT_PULLUP); //BUTTONは入力に設定 
  ALT_HOLD_SW = XPlaneRef("anim/25/button");
  //===============================================================================================
  /////////// setup内 Part-C LOC タクトスイッチ //////////////////
  //==============================================================================================
  pinMode(LOC_SwPin, INPUT_PULLUP); //BUTTONは入力に設定 
  LOC_SW = XPlaneRef("anim/26/button");
  //===============================================================================================
  /////////// setup内 Part-C APP タクトスイッチ //////////////////
  //==============================================================================================
  pinMode(APP_SwPin, INPUT_PULLUP); //BUTTONは入力に設定 
  APP_SW = XPlaneRef("anim/27/button");
  /*
  //===============================================================================================
  /////////// setup内 Part-C Teensyの電圧がONになっているかを確認 //////////////////
  //===============================================================================================
  //Teensyが動作しているのを確認。スタート時、3回点滅後、パネル本体の初期設定LED(AUTO)2個が点灯する。
  pinMode(Teensy_Pawer_ON_LED_Pin, OUTPUT);
  for(int i=0; i<3; i=i+1) {
	   digitalWrite(Teensy_Pawer_ON_LED_Pin, HIGH);
	   delay(1000);
	   digitalWrite(Teensy_Pawer_ON_LED_Pin, LOW);
	   delay(1000);
	}
  */
  
  
  
  
  
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  // setup内 Part-A LEDピン 74HC595 シフトレジスタ 経由 /////////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  //複雑な動きをするLEDの点灯/消灯のためにこのdatarefを特別に別枠で作成している。
  // ①AutoPilotSwLED = T7Avionics/ap/ap_mode
  // ②AutothrottleEngageSwLED = T7Avionics/ap/at_mode
  // ③Fd_Visible = T7Avionics/ap/fd_visible
  // ④ApproachSwLED = T7Avionics/ap/pitch_mode_armed
  // ⑤AltitudeHoldSwLED = T7Avionics/ap/pitch_mode_engaged
  // ⑥LocalizerSwLED = T7Avionics/ap/roll_mode_armed
  // ⑦HeadingTrackHoldSwLED = T7Avionics/ap/roll_mode_engaged
  // ⑧Warn_Flags = T7Avionics/ap/warn_flags
  
  Ap_Mode = XPlaneRef("T7Avionics/ap/ap_mode");
  At_mode = XPlaneRef("T7Avionics/ap/at_mode");
  Fd_Visible = XPlaneRef("T7Avionics/ap/fd_visible");
  Pitch_Mode_Armed = XPlaneRef("T7Avionics/ap/pitch_mode_armed");
  Pitch_Mode_Engaged = XPlaneRef("T7Avionics/ap/pitch_mode_engaged");
  Roll_Mode_Armed = XPlaneRef("T7Avionics/ap/roll_mode_armed");
  Roll_Mode_Engaged = XPlaneRef("T7Avionics/ap/roll_mode_engaged");
  Warn_Flags = XPlaneRef("T7Avionics/ap/warn_flags");
  
  //####### 左パネル Part-A ##########
  //===============================================================================================
  /////////// setup内 Part-A 74HC595(LED表示)シフトレジスタ A/P ランプ //////////////////
  //===============================================================================================
   AutoPilotSwLED = XPlaneRef("T7Avionics/ap/ap_mode");
    AutoPilotSwLED.onChange(updateAutoPilotSwLED);
  //===============================================================================================
  /////////// setup内 Part-A 74HC595(LED表示)シフトレジスタ A/T ランプ //////////////////
  //===============================================================================================
   AutothrottleEngageSwLED = XPlaneRef("T7Avionics/ap/at_mode");
   // AutothrottleEngageSwLED.onChange(updateAutothrottleEngageSwLED);
    //===============================================================================================
  /////////// setup内 Part-A 74HC595(LED表示)シフトレジスタ LNAV ランプ //////////////////旧T7Avionics/ap/roll_mode_engaged
  //===============================================================================================
  LateralNavSwLED = XPlaneRef("T7Avionics/ap/roll_mode_engaged");
  // LateralNavSwLED.onChange(updateLateralNavSwLED);
   //===============================================================================================
  /////////// setup内 Part-A 74HC595(LED表示)シフトレジスタ VNAV ランプ //////////////////
  //===============================================================================================
  VerticalNavSwLED = XPlaneRef("T7Avionics/ap/pitch_mode_engaged");
  // VerticalNavSwLED.onChange(updateVerticalNavSwLED);
  //===============================================================================================
  /////////// setup内 Part-A 74HC595(LED表示)シフトレジスタ FLCH ランプ //////////////////
  //===============================================================================================
  FlightLevelChangeSwLED = XPlaneRef("T7Avionics/ap/pitch_mode_engaged");
  // FlightLevelChangeSwLED.onChange(updateFlightLevelChangeSwLED);
  
  //####### 中央パネル Part-B ##########
  //===============================================================================================
  /////////// setup内 Part-B 74HC595(LED表示)シフトレジスタ TOGA ランプ //////////////////
  //===============================================================================================
  //sim/cockpit2/autopilot/TOGA_statusp
  TogaSwLED = XPlaneRef("T7Avionics/ap/pitch_mode_engaged");//まだ不明
  // TogaSwLED.onChange(updateTogaSwLED);
  //===============================================================================================
  /////////// setup内 Part-B 74HC595(LED表示)シフトレジスタ DISK ランプ //////////////////
  //===============================================================================================
  //実際はランプはない、作成してしまったので瞬間だけ点灯させる。
  DiskSwLED = XPlaneRef("T7Avionics/ap/pitch_mode_engaged");//まだ不明
  // DiskSwLED.onChange(updateDiskSwLED);
   
   //==============================================================================================
  /////////// setup内 Part-B 74HC595(LED表示)シフトレジスタ BANK LIMITチェンジ ランプ //////////////////
  //==============================================================================================
  BankLimit_chengeLED = XPlaneRef("anim/68/switch");
    BankLimit_chengeLED.onChange(updateBankLimit_chengeLED);
    
  //LEDの初期設定(X-Planeを起動した時この点灯にする)
  setRegisterPin(bankAUTO_74HC595_Pin, HIGH);
  setRegisterPin(bank5_74HC595_Pin, LOW);
  setRegisterPin(bank10_74HC595_Pin, LOW);
  setRegisterPin(bank15_74HC595_Pin, LOW);
  setRegisterPin(bank20_74HC595_Pin, LOW);
  setRegisterPin(bank25_74HC595_Pin, LOW);
  //==============================================================================================
  /////////// setup内 Part-B 74HC595(LED表示)シフトレジスタ AUTO/1000チェンジ ランプ //////////////////
  //==============================================================================================
  AUTO_1000_chengeLED = XPlaneRef("anim/69/switch");
    AUTO_1000_chengeLED.onChange(updateAUTO_1000_chengeLED);

  //LEDの初期設定(X-Planeを起動した時この点灯にする)
  setRegisterPin(upAUTO_74HC595_Pin, HIGH);
  setRegisterPin(up1000_74HC595_Pin, LOW);
  //===============================================================================================
  /////////// setup内 Part-B 74HC595(LED表示)シフトレジスタ HDG HOLD ランプ //////////////////
  //===============================================================================================
  HeadingTrackHoldSwLED = XPlaneRef("T7Avionics/ap/roll_mode_engaged");
   // HeadingTrackHoldSwLED.onChange(updateHeadingTrackHoldSwLED);
    
    
  //####### 右パネル Part-C ##########
  //===============================================================================================
  /////////// setup内 Part-C 74HC595(LED表示)シフトレジスタ V/S FPA ランプ //////////////////
  //===============================================================================================
  VsFpaReferenceSwLED = XPlaneRef("T7Avionics/ap/pitch_mode_engaged");
    VsFpaReferenceSwLED.onChange(updateVsFpaReferenceSwLED);
  //===============================================================================================
  /////////// setup内 Part-C 74HC595(LED表示)シフトレジスタ ALT HOLD ランプ //////////////////
  //===============================================================================================
  AltitudeHoldSwLED = XPlaneRef("T7Avionics/ap/pitch_mode_engaged"); 
    AltitudeHoldSwLED.onChange(updateAltitudeHoldSwLED);
  //===============================================================================================
  /////////// setup内 Part-C 74HC595(LED表示)シフトレジスタ LOC ランプ //////////////////
  //===============================================================================================
  LocalizerSwLED = XPlaneRef("T7Avionics/ap/roll_mode_armed"); 
  // LocalizerSwLED.onChange(updateLocalizerSwLED);
  //===============================================================================================
  /////////// setup内 Part-C 74HC595(LED表示)シフトレジスタ APP ランプ //////////////////
  //===============================================================================================
  ApproachSwLED = XPlaneRef("T7Avionics/ap/pitch_mode_armed"); 
  //  ApproachSwLED.onChange(updateApproachSwLED);
  //===============================================================================================
  /////////// setup内 Part-C HDG BANK LIMIT 6モード切り替え スイッチ //////////////////
  //===============================================================================================
  pinMode(BankLimit_SwPin, INPUT_PULLUP);   
  BankLimit_Cange = XPlaneRef("anim/68/switch");

}





void loop() {
  FlightSim.update();
  
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  // loop内 74HC595 シフトレジスタ 共通 //
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  writeRegisters();  //変更内容を表示するために呼び出さなければなりません
                     //必要な値が設定された後に一度だけ呼び出します。
  //////// loop内 シフトレジスタ 共通 END ///////////////////////////////////////////////////////////////////
  
  
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  /////////// loop内 スイッチ Teensy 直結ピン //////////////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  //####### 左パネル Part-A ##########
  //==============================================================================================
  /////////// loop内 Part-A FlightDirector トグルスイッチ //////////////////
  //==============================================================================================
  FDir_toggle_switch.update();
    if (FDir_toggle_switch.fallingEdge()) {
    FlightDirector = 1;        //スイッチ押し下げたときdatarefを'1'にする
    inactivityTimeout = 0;
  }
  if (FDir_toggle_switch.risingEdge()) {
    FlightDirector = 0;        //スイッチ押し下げたときdatarefを'0'にする
  }
  //==============================================================================================
  /////////// loop内 Part-A AutoThrottle ARM トグルスイッチ //////////////////
  //==============================================================================================
  ATarmSwitch.update();
  if (ATarmSwitch.fallingEdge()) {
    AutoThrottleARM = 1;
    inactivityTimeout = 0;
  }
  if (ATarmSwitch.risingEdge()) {
    AutoThrottleARM = 0;
  }
  //==============================================================================================
  /////////// loop内 Part-A AP タクトスイッチ //////////////////
  //==============================================================================================
  APSwitch.update();
  if (APSwitch.fallingEdge()) {
    AutoPilotSW = 2; 
    inactivityTimeout = 0;
  }
  if (APSwitch.risingEdge()) {
    AutoPilotSW = 0;
  }
  //==============================================================================================
  /////////// loop内 Part-A CLB CON タクトスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  //以下はタクトスイッチを押したとき、1度目はONを保持し、2度めでOFFを保持するを繰り返す。
   CLBCON_SwPin_val = digitalRead(CLBCON_SwPin);
  if((CLBCON_SwPin_val == LOW) && (CLBCON_SwPin_old_val == HIGH)) { 
    CLBCON_SwPin_state = 1 - CLBCON_SwPin_state; 
    //delay(10); //チャタリングが起きるいときはこれを有効にする(500位が安定しているかも)
  } 
  CLBCON_SwPin_old_val = CLBCON_SwPin_val; 
  if(CLBCON_SwPin_state ==1){ 
    CLBCON_SW = 1;
  } else { 
    CLBCON_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-A A/T タクトスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  AT_SwPin_val = digitalRead(AT_SwPin); 
  if((AT_SwPin_val == LOW) && (AT_SwPin_old_val == HIGH)) { 
    AT_SwPin_state = 1 - AT_SwPin_state; 
    //delay(10); 
  } 
  
  AT_SwPin_old_val = AT_SwPin_val;
  if(AT_SwPin_state ==1){ 
    AT_SW = 1;
  } else { 
    AT_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-A Ias Mach 切り替えスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  IAS_MACHchenge_SwPin_val = digitalRead(IAS_MACHchenge_SwPin); 
  
  if((IAS_MACHchenge_SwPin_val == LOW) && (IAS_MACHchenge_SwPin_old_val == HIGH)) {
    IAS_MACHchenge_SwPin_state = 1 - IAS_MACHchenge_SwPin_state;  
  } 
 
  IAS_MACHchenge_SwPin_old_val = IAS_MACHchenge_SwPin_val; 
  
  if(IAS_MACHchenge_SwPin_state ==1){ 
    IAS_MACHchenge_SW = 1;
  } 
  else { 
    IAS_MACHchenge_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-A AirSpeed エンコーダ //////////////////
  //==============================================================================================
  // 1クリックで4つ変化するので4で割って1つずつカウントするようにする
  short AirSpEncDiff = (AirSpEnc.read() - AirSpEncPrev) / 4;
  
  if (AirSpEncDiff) {
    // only update prev when we've reached a detent!
    //戻り止めに達した場合にのみPREVを更新!
    AirSpEncPrev = 0;
    AirSpEnc.write(0);
  
    // datarefを一時的な値にコピー
    float airSp = AirSpeed;
    float airSpkn = AirSpeedknob;
  
    // 一時的な値に変更を適用
    airSp += AirSpEncDiff;
    airSpkn += AirSpEncDiff;
  
    // 範囲チェックを行う
    while (airSp < 100) airSp += 1;  //エアスピードが 100 より小さい場合は 1 をプラスする(つまり100で止まる)
    while (airSp >= 400) airSp -= 1;  //エアスピードが 400 より大きい場合は 1 をマイナスする(つまり399で止まる)
  
    // datarefへ検証された新しいエアースピードの数値を書く
    AirSpeed = airSp;
    AirSpeedknob = airSpkn;
  }
  //==============================================================================================
  /////////// loop内 Part-A AirSpeed エンコーダ プッシュスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  AirSpeed_EncPush_SwPin_val = digitalRead(AirSpeed_EncPush_SwPin); 
  if((AirSpeed_EncPush_SwPin_val == LOW) && (AirSpeed_EncPush_SwPin_old_val == HIGH)) { 
    AirSpeed_EncPush_SwPin_state = 1 - AirSpeed_EncPush_SwPin_state;  
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
  AirSpeed_EncPush_SwPin_old_val = AirSpeed_EncPush_SwPin_val; //valはもう古くなったので保持しておく 
  if(AirSpeed_EncPush_SwPin_state ==1){ 
    AirSpeed_EncPush_SW = 1;
  } else { 
    AirSpeed_EncPush_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-A LNAV タクトスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  LNAV_SwPin_val = digitalRead(LNAV_SwPin); 
  if((LNAV_SwPin_val == LOW) && (LNAV_SwPin_old_val == HIGH)) { 
    LNAV_SwPin_state = 1 - LNAV_SwPin_state;  
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
  LNAV_SwPin_old_val = LNAV_SwPin_val; 
  if(LNAV_SwPin_state ==1){ 
    LNAV_SW = 1;
  } else { 
    LNAV_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-A VNAV タクトスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  VNAV_SwPin_val = digitalRead(VNAV_SwPin); 
  if((VNAV_SwPin_val == LOW) && (VNAV_SwPin_old_val == HIGH)) { 
    VNAV_SwPin_state = 1 - VNAV_SwPin_state;  
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
  VNAV_SwPin_old_val = VNAV_SwPin_val;  
  if(VNAV_SwPin_state ==1){ 
    VNAV_SW = 1;
  } 
  else { 
    VNAV_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-A FLCH タクトスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  FLCH_SwPin_val = digitalRead(FLCH_SwPin); //ボタンの入力(HIGHかLOW)を読み取りvalに格納
                                        //入力がHIGH(ボタンが押されている)なら状態(state)を変更 
  if((FLCH_SwPin_val == LOW) && (FLCH_SwPin_old_val == HIGH)) { //LOW、HIGHを逆にすると押上たときに点灯するようになる
    FLCH_SwPin_state = 1 - FLCH_SwPin_state;  //stateは1からstateを引いた値(つまり、stateが1なら0、0なら1となる)
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
 
  FLCH_SwPin_old_val = FLCH_SwPin_val; //valはもう古くなったので保持しておく 
  if(FLCH_SwPin_state ==1){ 
    FLCH_SW = 1;
  } 
  else { 
    FLCH_SW = 0;
  } 
  
  //####### 中央パネル Part-B ##########
  //==============================================================================================
  /////////// loop内 Part-B TOGA タクトスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  Toga_SwPin_val = digitalRead(TOGA_SwPin); //ボタンの入力(HIGHかLOW)を読み取りvalに格納
                                        //入力がHIGH(ボタンが押されている)なら状態(state)を変更 
  if((Toga_SwPin_val == LOW) && (Toga_SwPin_old_val == HIGH)) { //LOW、HIGHを逆にすると押上たときに点灯するようになる
    Toga_SwPin_state = 1 - Toga_SwPin_state;  //stateは1からstateを引いた値(つまり、stateが1なら0、0なら1となる)
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
 
  Toga_SwPin_old_val = Toga_SwPin_val; //valはもう古くなったので保持しておく 
  if(Toga_SwPin_state ==1){ 
    TOGA_SW = 1;
  } 
  else { 
    TOGA_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-B DISC タクトスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  DISK_SwPin_val = digitalRead(DISK_SwPin); //ボタンの入力(HIGHかLOW)を読み取りvalに格納
                                        //入力がHIGH(ボタンが押されている)なら状態(state)を変更 
  if((DISK_SwPin_val == LOW) && (DISK_SwPin_old_val == HIGH)) { //LOW、HIGHを逆にすると押上たときに点灯するようになる
    DISK_SwPin_state = 1 - DISK_SwPin_state;  //stateは1からstateを引いた値(つまり、stateが1なら0、0なら1となる)
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
 
  DISK_SwPin_old_val = DISK_SwPin_val; //valはもう古くなったので保持しておく 
  if(DISK_SwPin_state ==1){ 
    DISK_SW = 1;
  } 
  else { 
    DISK_SW = 0;
  } 
  
  //==============================================================================================
  /////////// loop内 Part-B 謎の タクトスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  Unknown_SwPin_val = digitalRead(Unknown_SwPin); 
  if((Unknown_SwPin_val == LOW) && (Unknown_SwPin_old_val == HIGH)) { 
    Unknown_SwPin_state = 1 - Unknown_SwPin_state; 
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
  Unknown_SwPin_old_val = Unknown_SwPin_val; //valはもう古くなったので保持しておく 
  if(Unknown_SwPin_state ==1){ 
    Unknown_SW = 1;
  } 
  else { 
    Unknown_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-B HDG TRK 切り替えスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  HDG_TRKchange_SwPin_val = digitalRead(HDG_TRKchange_SwPin); 
  if((HDG_TRKchange_SwPin_val == LOW) && (HDG_TRKchange_SwPin_old_val == HIGH)) { 
    HDG_TRKchange_SwPin_state = 1 - HDG_TRKchange_SwPin_state; 
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
  HDG_TRKchange_SwPin_old_val = HDG_TRKchange_SwPin_val; //valはもう古くなったので保持しておく 
  if(HDG_TRKchange_SwPin_state ==1){ 
    HDG_TRKchange_SW = 1;
  } 
  else { 
    HDG_TRKchange_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-B HDG エンコーダ //////////////////
  //==============================================================================================
  short HdgEncDiff = (HdgEnc.read() - HdgEncPrev) / 4;
  
  if (HdgEncDiff) {
    // only update prev when we've reached a detent!
    HdgEncPrev = 0;
    HdgEnc.write(0);
  
    // copy dataref to temporary value
    float hdg = headingBug;
  
    // apply changes to temp value
    hdg += HdgEncDiff;
  
    // do range checking
    while (hdg < 0.0) hdg += 360.0;
    while (hdg >= 360.0) hdg -= 360.0;
  
    // 検証されてものを書き込む
    headingBug = hdg;
    headingBugKnob = hdg;
  }
  //==============================================================================================
  /////////// loop内 Part-B HDG エンコーダ プッシュスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  //下のHIGHとLOWで最初の数値が0か1かを設定できる。最初のスタート時は0にならなければならない。
  HDG_EncPush_SwPin_val = digitalRead(HDG_EncPush_SwPin); //ボタンの入力(HIGHかLOW)を読み取りvalに格納
                                        //入力がHIGH(ボタンが押されている)なら状態(state)を変更 
  if((HDG_EncPush_SwPin_val == LOW) && (HDG_EncPush_SwPin_old_val == HIGH)) { //LOW、HIGHを逆にすると押上たときに点灯するようになる
    HDG_EncPush_SwPin_state = 1 - HDG_EncPush_SwPin_state;  //stateは1からstateを引いた値(つまり、stateが1なら0、0なら1となる)
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
 
  HDG_EncPush_SwPin_old_val = HDG_EncPush_SwPin_val; //valはもう古くなったので保持しておく 
  if(HDG_EncPush_SwPin_state ==1){ 
    HDG_EncPush_SW = 1;
  } 
  else { 
    HDG_EncPush_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-B HDG HOLD タクトスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  HDG_HOLD_SwPin_val = digitalRead(HDG_HOLD_SwPin); 
  if((HDG_HOLD_SwPin_val == LOW) && (HDG_HOLD_SwPin_old_val == HIGH)) {
    HDG_HOLD_SwPin_state = 1 - HDG_HOLD_SwPin_state; 
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
  HDG_HOLD_SwPin_old_val = HDG_HOLD_SwPin_val;  
  if(HDG_HOLD_SwPin_state ==1){ 
    HDG_HOLD_SW = 1;
  } 
  else { 
    HDG_HOLD_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-B BANK LIMIT 6モード切り替え スイッチ //////////////////
  //==============================================================================================
  prev = BankLimit_Cange;
  
  FlightSim.update();
  BankLimit_modeSwitchPin.update();
   
  if(BankLimit_modeSwitchPin.fallingEdge()) {    //切り替えスイッチが押されたら
    ++mode;                                      //modeを1つずつ変化させる
    if(mode >= Mode_Count)                       //もしMode_Countより大きくなったら
      mode = 0;                                  //0に戻す
  }
  // ロータリーエンコーダを読む、それが変化したらBankLimit_Cangeにその数値を書き込む
  if (mode == BankLimit_0_Mode) {
    BankLimit_Cange = 0;
  }
  if (mode == BankLimit_1_Mode) {
    BankLimit_Cange = 1;
  } 
  if (mode == BankLimit_2_Mode) {
    BankLimit_Cange = 2; 
  }
  if (mode == BankLimit_3_Mode) {
    BankLimit_Cange = 3; 
  }
  if (mode == BankLimit_4_Mode) {
    BankLimit_Cange = 4;  
  }
  if (mode == BankLimit_5_Mode) {
    BankLimit_Cange = 5; 
  }
  
  //####### 右パネル Part-C ##########
  //==============================================================================================
  /////////// loop内 Part-C V/S FPA 切り替えスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。一度スイッチを押したら、離してもONにする設定。
  VS_FRA_change_SwPin_val = digitalRead(VS_FRA_change_SwPin); 
  if((VS_FRA_change_SwPin_val == LOW) && (VS_FRA_change_SwPin_old_val == HIGH)) { 
    VS_FRA_change_SwPin_state = 1 - VS_FRA_change_SwPin_state;  
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
  VS_FRA_change_SwPin_old_val = VS_FRA_change_SwPin_val;  
  if(VS_FRA_change_SwPin_state ==1){ 
    VS_FRA_change_SW = 1;
  } else { 
    VS_FRA_change_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-C V/S エンコーダ //////////////////
  //==============================================================================================
  // 1クリックで4つ変化するので4で割って1つずつカウントするようにする
  short VSpEncDiff = (VSpEnc.read() - VSpEncPrev) *100 /4;
  
  if (VSpEncDiff) {
    // only update prev when we've reached a detent!
    //戻り止めに達した場合にのみPREVを更新!
    VSpEncPrev = 0;
    VSpEnc.write(0);
    // datarefを一時的な値にコピー
    float verSp = VerticalSpeed;
    // 一時的な値に変更を適用
    verSp += VSpEncDiff;
    // 範囲チェックを行う
    while (verSp < -6000) verSp += 1;  //エアスピードが -6000 より小さい場合は 1 をプラスする(つまり-6000で止まる)
    while (verSp >= 8001) verSp -= 1;  //エアスピードが 8001 より大きい場合は 1 をマイナスする(つまり8000で止まる)
    // datarefへ検証された新しいエアースピードの数値を書く
    VerticalSpeed = verSp;
    VSpeedKnob = verSp;
  }
  //==============================================================================================
  /////////// loop内 Part-C V/S FPA タクトスイッチ //////////////////
  //============================================================================================== 
  //スイッチの保持設定スクリプト。
  VS_FPA_SwPin_val = digitalRead(VS_FPA_SwPin); 
  if((VS_FPA_SwPin_val == LOW) && (VS_FPA_SwPin_old_val == HIGH)) { 
    VS_FPA_SwPin_state = 1 - VS_FPA_SwPin_state; 
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
  VS_FPA_SwPin_old_val = VS_FPA_SwPin_val; 
  if(VS_FPA_SwPin_state ==1){ 
    VS_FPA_SW = 1;
  } 
  else { 
    VS_FPA_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-C LOC タクトスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。一度スイッチを押したら、離してもONにする設定。
  LOC_SwPin_val = digitalRead(LOC_SwPin); 
  if((LOC_SwPin_val == LOW) && (LOC_SwPin_old_val == HIGH)) { 
    LOC_SwPin_state = 1 - LOC_SwPin_state;  
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
  LOC_SwPin_old_val = LOC_SwPin_val;  
  if(LOC_SwPin_state ==1){ 
    LOC_SW = 1;
  }  else { 
    LOC_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-C APP タクトスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  APP_SwPin_val = digitalRead(APP_SwPin); 
  if((APP_SwPin_val == LOW) && (APP_SwPin_old_val == HIGH)) {
    APP_SwPin_state = 1 - APP_SwPin_state;  
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
  APP_SwPin_old_val = APP_SwPin_val;
  if(APP_SwPin_state ==1){ 
    APP_SW = 1;
  }  else { 
    APP_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-A AUTO 1000 切り替えスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  AUTO_1000_changeSwPin_val = digitalRead(AUTO_1000_changeSwPin);                                  
  if((AUTO_1000_changeSwPin_val == LOW) && (AUTO_1000_changeSwPin_old_val == HIGH)) { 
    AUTO_1000_changeSwPin_state = 1 - AUTO_1000_changeSwPin_state; 
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
  AUTO_1000_changeSwPin_old_val = AUTO_1000_changeSwPin_val;  
  if(AUTO_1000_changeSwPin_state ==1){ 
    AUTO_1000_changeSW = 1;
  } 
  else { 
    AUTO_1000_changeSW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-C ALTITUDE エンコーダ //////////////////
  //==============================================================================================
  // スイッチが AUTO の場合
  if (AUTO_1000_changeSW == 1) {
    short AltEncDiff = (AltEnc.read() - AltEncPrev) *1000 /4;
    if (AltEncDiff) {
      AltEncPrev = 0;
      AltEnc.write(0);
      float AltSp = Altitude;
      AltSp += AltEncDiff;
      while (AltSp < -0) AltSp += 1;  
      while (AltSp >= 50001) AltSp -= 1;  
      Altitude = AltSp;
      AltKnob = AltSp;
    }
  }
  // スイッチが 1000 の場合
  if (AUTO_1000_changeSW == 0) {
    short AltEncDiff = (AltEnc.read() - AltEncPrev) *100 /4;
    if (AltEncDiff) {
      AltEncPrev = 0;
      AltEnc.write(0);
      float AltSp = Altitude;
      AltSp += AltEncDiff;
      while (AltSp < -0) AltSp += 1;  
      while (AltSp >= 50001) AltSp -= 1;  
      Altitude = AltSp;
      AltKnob = AltSp;
    }
  }
  //==============================================================================================
  /////////// loop内 Part-C ALTITUDE エンコーダ プッシュスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。一度スイッチを押したら、離してもONにする設定。
  ALT_EncPush_SwPin_val = digitalRead(ALT_EncPush_SwPin); //ボタンの入力(HIGHかLOW)を読み取りvalに格納
                                        //入力がHIGH(ボタンが押されている)なら状態(state)を変更 
  if((ALT_EncPush_SwPin_val == LOW) && (ALT_EncPush_SwPin_old_val == HIGH)) { //LOW、HIGHを逆にすると押上たときに点灯するようになる
    ALT_EncPush_SwPin_state = 1 - ALT_EncPush_SwPin_state;  //stateは1からstateを引いた値(つまり、stateが1なら0、0なら1となる)
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
  ALT_EncPush_SwPin_old_val = ALT_EncPush_SwPin_val; //valはもう古くなったので保持しておく 
  if(ALT_EncPush_SwPin_state ==1){ 
    ALT_EncPush_SW = 1;
  } 
  else { 
    ALT_EncPush_SW = 0;
  } 
  //==============================================================================================
  /////////// loop内 Part-C ALT HOLD タクトスイッチ //////////////////
  //==============================================================================================
  //スイッチの保持設定スクリプト。
  ALT_HOLD_SwPin_val = digitalRead(ALT_HOLD_SwPin);                                        
  if((ALT_HOLD_SwPin_val == LOW) && (ALT_HOLD_SwPin_old_val == HIGH)) { 
    ALT_HOLD_SwPin_state = 1 - ALT_HOLD_SwPin_state; 
    //delay(10); //この位がチャタリングが起きない(500位が安定している)
  } 
  ALT_HOLD_SwPin_old_val = ALT_HOLD_SwPin_val;  
  if(ALT_HOLD_SwPin_state ==1){ 
    ALT_HOLD_SW = 1;
  }  else { 
    ALT_HOLD_SW = 0;
  } 
  //===============================================================================================
  /////////// loop内 Part-C Part-C Teensyの電圧がONになっているかを確認 //////////////////
  //===============================================================================================
  //このLEDだけanalogWriteを使用するためTeensyに直結している。
  //ランプの輝度を50に下げている(255がフル)
  analogWrite(Teensy_Pawer_ON_LED_Pin, 50);
  //####### 中央パネル Part-B ##########
  
  
  
  
  
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  // loop内 Part-A LEDピン 74HC595 シフトレジスタ 経由 /////////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  //####### 左パネル Part-A ##########
  //==============================================================================================
  /////////// loop内 Part-A 74HC595(LED表示)シフトレジスタ  A/T ランプ //////////////////
  //==============================================================================================
  // このパートはまだ調整中!これ以外で点灯するなら、以下に追加していくことになる。
  // ①Ap_Mode = (T7Avionics/ap/ap_mode);
  // ②At_mode = (T7Avionics/ap/at_mode);
  // ③Fd_Visible = (T7Avionics/ap/fd_visible);
  // ④Pitch_Mode_Armed = (T7Avionics/ap/pitch_mode_armed);
  // ⑤Pitch_Mode_Engaged = (T7Avionics/ap/pitch_mode_engaged);
  // ⑥Roll_Mode_Armed = (T7Avionics/ap/roll_mode_armed);
  // ⑦Roll_Mode_Engaged = (T7Avionics/ap/roll_mode_engaged);
  // ⑧Warn_Flags = (T7Avionics/ap/warn_flags);
  
  
  if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 5 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == 6 && Pitch_Mode_Engaged == 5 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 6 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 0 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == 7 && Pitch_Mode_Engaged == 6 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 0 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 0 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 5 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 0 && At_mode == 1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 0 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 5 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 0 && At_mode == 1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 0 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 0 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 0 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 5 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 4 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 3 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == 6 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  }
 else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 5 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  }  
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == 6 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 5 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 3 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == 7 && Pitch_Mode_Engaged == 6 && Roll_Mode_Armed == 4 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 0 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 5 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == 6 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  }
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  }
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 2 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  }    
  else if (Ap_Mode == 1 && At_mode == 1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  }  
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 9 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  }   
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 9 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  }  
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == 6 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  }  
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 3 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  }  
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 0 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  }  
  else if (Ap_Mode == 1 && At_mode == 5,4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 3 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2,3 && Warn_Flags == 0) { 
   setRegisterPin(AT_74HC595_Pin, HIGH);
  }  
  else{
    setRegisterPin(AT_74HC595_Pin, LOW);
  } 
  //==============================================================================================
  /////////// loop内 Part-A 74HC595(LED表示)シフトレジスタ LNAV ランプ //////////////////
  //==============================================================================================
  // このパートはまだ調整中!これ以外で点灯するなら、以下に追加していくことになる。
  // ①Ap_Mode = (T7Avionics/ap/ap_mode);
  // ②At_mode = (T7Avionics/ap/at_mode);
  // ③Fd_Visible = (T7Avionics/ap/fd_visible);
  // ④Pitch_Mode_Armed = (T7Avionics/ap/pitch_mode_armed);
  // ⑤Pitch_Mode_Engaged = (T7Avionics/ap/pitch_mode_engaged);
  // ⑥Roll_Mode_Armed = (T7Avionics/ap/roll_mode_armed);
  // ⑦Roll_Mode_Engaged = (T7Avionics/ap/roll_mode_engaged);
  // ⑧Warn_Flags = (T7Avionics/ap/warn_flags);

  if (Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 4 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2) { 
   setRegisterPin(LNAV_74HC595_Pin, HIGH);
  } 
  else if (Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 5 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2) { 
   setRegisterPin(LNAV_74HC595_Pin, HIGH);
  } 
  else if (Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 0 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2) { 
   setRegisterPin(LNAV_74HC595_Pin, HIGH);
  } 
  else if (Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2) { 
   setRegisterPin(LNAV_74HC595_Pin, HIGH);
  } 
  else if (Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2) { 
   setRegisterPin(LNAV_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 3 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(LNAV_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == -1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 0 && Roll_Mode_Armed == 2 && Roll_Mode_Engaged == 5 && Warn_Flags == 0) { 
   setRegisterPin(LNAV_74HC595_Pin, HIGH);
  } 
    else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 3 && Roll_Mode_Armed == 2 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(LNAV_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 5 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 3 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(LNAV_74HC595_Pin, HIGH);
  }  
  
  else{
    setRegisterPin(LNAV_74HC595_Pin, LOW);
  }
  //==============================================================================================
  /////////// loop内 Part-A 74HC595(LED表示)シフトレジスタ VNAV ランプ //////////////////
  //==============================================================================================
  // ①Ap_Mode = (T7Avionics/ap/ap_mode);
  // ②At_mode = (T7Avionics/ap/at_mode);
  // ③Fd_Visible = (T7Avionics/ap/fd_visible);
  // ④Pitch_Mode_Armed = (T7Avionics/ap/pitch_mode_armed);
  // ⑤Pitch_Mode_Engaged = (T7Avionics/ap/pitch_mode_engaged);
  // ⑥Roll_Mode_Armed = (T7Avionics/ap/roll_mode_armed);
  // ⑦Roll_Mode_Engaged = (T7Avionics/ap/roll_mode_engaged);
  // ⑧Warn_Flags = (T7Avionics/ap/warn_flags);
  
  if (Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 5 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2) { 
   setRegisterPin(VNAV_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 4 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(VNAV_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 3 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(VNAV_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 3 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(VNAV_74HC595_Pin, HIGH);
  } 
   else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 3 && Roll_Mode_Armed == 2 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(VNAV_74HC595_Pin, HIGH);
  }
 else if (Ap_Mode == 1 && At_mode == 5 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 3 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2 && Warn_Flags == 0) { 
   setRegisterPin(VNAV_74HC595_Pin, HIGH);
  }  
 else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == -1 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(VNAV_74HC595_Pin, HIGH);
  }   
  else{
    setRegisterPin(VNAV_74HC595_Pin, LOW);
  }
   //==============================================================================================
  /////////// loop内 Part-A 74HC595(LED表示)シフトレジスタ FLCH ランプ //////////////////
  //===============================================================================================
  // このパートはまだ調整中!これ以外で点灯するなら、以下に追加していくことになる。
  // ①Ap_Mode = (T7Avionics/ap/ap_mode);
  // ②At_mode = (T7Avionics/ap/at_mode);
  // ③Fd_Visible = (T7Avionics/ap/fd_visible);
  // ④Pitch_Mode_Armed = (T7Avionics/ap/pitch_mode_armed);
  // ⑤Pitch_Mode_Engaged = (T7Avionics/ap/pitch_mode_engaged);
  // ⑥Roll_Mode_Armed = (T7Avionics/ap/roll_mode_armed);
  // ⑦Roll_Mode_Engaged = (T7Avionics/ap/roll_mode_engaged);
  // ⑧Warn_Flags = (T7Avionics/ap/warn_flags);
  
  if (Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 2) { 
   setRegisterPin(FLCH_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == -1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 5 && Warn_Flags == 0) { 
   setRegisterPin(FLCH_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 5 && Warn_Flags == 0) { 
   setRegisterPin(FLCH_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == -1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(FLCH_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(FLCH_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == 6 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(FLCH_74HC595_Pin, HIGH);
  }
 else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(FLCH_74HC595_Pin, HIGH);
  } 
 else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(FLCH_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == -1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(FLCH_74HC595_Pin, HIGH);
  }
 else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(FLCH_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(FLCH_74HC595_Pin, HIGH);
  } 
else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(FLCH_74HC595_Pin, HIGH);
  }
else if (Ap_Mode == 1 && At_mode == -1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(FLCH_74HC595_Pin, HIGH);
  }   
  
  else{
    setRegisterPin(FLCH_74HC595_Pin, LOW);
  }
  
  //==============================================================================================
  /////////// loop内 Part-B 74HC595(LED表示)シフトレジスタ HDG HOLD ランプ //////////////////
  //==============================================================================================
  // このパートはまだ調整中!これ以外で点灯するなら、以下に追加していくことになる。
  // ①Ap_Mode = (T7Avionics/ap/ap_mode);
  // ②At_mode = (T7Avionics/ap/at_mode);
  // ③Fd_Visible = (T7Avionics/ap/fd_visible);
  // ④Pitch_Mode_Armed = (T7Avionics/ap/pitch_mode_armed);
  // ⑤Pitch_Mode_Engaged = (T7Avionics/ap/pitch_mode_engaged);
  // ⑥Roll_Mode_Armed = (T7Avionics/ap/roll_mode_armed);
  // ⑦Roll_Mode_Engaged = (T7Avionics/ap/roll_mode_engaged);
  // ⑧Warn_Flags = (T7Avionics/ap/warn_flags);
  
  if (Ap_Mode == 1 && At_mode == -1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(HDG_HOLD_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == -1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(HDG_HOLD_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(HDG_HOLD_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(HDG_HOLD_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 2 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(HDG_HOLD_74HC595_Pin, HIGH);
  } 
  else{
    setRegisterPin(HDG_HOLD_74HC595_Pin, LOW);
  }
  
  
  
  //####### 右パネル Part-C ##########
  //==============================================================================================
  /////////// loop内 Part-C 74HC595(LED表示)シフトレジスタ LOC & APP ランプ //////////////////
  //==============================================================================================
  // このパートはまだ調整中!これ以外で点灯するなら、以下に追加していくことになる。
  // ①Ap_Mode = (T7Avionics/ap/ap_mode);
  // ②At_mode = (T7Avionics/ap/at_mode);
  // ③Fd_Visible = (T7Avionics/ap/fd_visible);
  // ④Pitch_Mode_Armed = (T7Avionics/ap/pitch_mode_armed);
  // ⑤Pitch_Mode_Engaged = (T7Avionics/ap/pitch_mode_engaged);
  // ⑥Roll_Mode_Armed = (T7Avionics/ap/roll_mode_armed);
  // ⑦Roll_Mode_Engaged = (T7Avionics/ap/roll_mode_engaged);
  // ⑧Warn_Flags = (T7Avionics/ap/warn_flags);
  
  //LOCのLED点灯の場合
  if (Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == 3) { 
   setRegisterPin(LOC_74HC595_Pin, HIGH);  //LOCのLED点灯
  } 
  
  
  else if (Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3) { 
   setRegisterPin(LOC_74HC595_Pin, HIGH);  //LOCのLED点灯 
  }
  else if (Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 3 && Roll_Mode_Armed == 2 && Roll_Mode_Engaged == 3) { 
   setRegisterPin(LOC_74HC595_Pin, HIGH);  //LOCのLED点灯 
  }
  else if (Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 3 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3) { 
   setRegisterPin(LOC_74HC595_Pin, HIGH);  //LOCのLED点灯 
  }
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(LOC_74HC595_Pin, HIGH);  //LOCのLED点灯 
  }
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(LOC_74HC595_Pin, HIGH);  //LOCのLED点灯 
  }
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(LOC_74HC595_Pin, HIGH);  //LOCのLED点灯 
  }
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 9 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(LOC_74HC595_Pin, HIGH);
  }
  else if (Ap_Mode == 1 && At_mode == -1 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 1 && Warn_Flags == 0) { 
   setRegisterPin(LOC_74HC595_Pin, HIGH);
  }  
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 5 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(LOC_74HC595_Pin, HIGH);
  }  
  else{
    setRegisterPin(LOC_74HC595_Pin, LOW);  //LOCのLED消灯
  }
  
  // APPのLED点灯の場合
  if (Pitch_Mode_Armed == 6 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 1) {   
   setRegisterPin(APP_74HC595_Pin, HIGH);  //APPののLED点灯
  }
  
  else if (Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 6 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3) {  
   setRegisterPin(APP_74HC595_Pin, HIGH);  //APPののLED点灯
  }
  
  else if (Pitch_Mode_Armed == 7 && Pitch_Mode_Engaged == 6 && Roll_Mode_Armed == 4 && Roll_Mode_Engaged == 3) {   
   setRegisterPin(APP_74HC595_Pin, HIGH);  //APPののLED点灯
  }
  
  else if (Pitch_Mode_Armed == -1 && Pitch_Mode_Engaged == 6 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3) {   
   setRegisterPin(APP_74HC595_Pin, HIGH);  //APPののLED点灯
  }
 
  else if (Pitch_Mode_Armed == 6 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3) {  
   setRegisterPin(APP_74HC595_Pin, HIGH);  //APPののLED点灯
  }
  else if (Ap_Mode == 1 && At_mode == -1 && Fd_Visible == 1 && Pitch_Mode_Armed == 6 && Pitch_Mode_Engaged == 1 && Roll_Mode_Armed == 3 && Roll_Mode_Engaged == 5 && Warn_Flags == 0) { 
   setRegisterPin(APP_74HC595_Pin, HIGH);  //LOCのLED点灯 
  }
  else if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 1 && Pitch_Mode_Armed == 6 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(APP_74HC595_Pin, HIGH);  //LOCのLED点灯 
  }
  else if (Ap_Mode == 1 && At_mode == -1 && Fd_Visible == 1 && Pitch_Mode_Armed == 6 && Pitch_Mode_Engaged == 8 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(APP_74HC595_Pin, HIGH);
  } 
  else if (Ap_Mode == 1 && At_mode == 4 && Fd_Visible == 1 && Pitch_Mode_Armed == 6 && Pitch_Mode_Engaged == 5 && Roll_Mode_Armed == -1 && Roll_Mode_Engaged == 3 && Warn_Flags == 0) { 
   setRegisterPin(APP_74HC595_Pin, HIGH);
  } 
  
  else{
    setRegisterPin(APP_74HC595_Pin, LOW);
  }
  //==============================================================================================
  /////////// loop内 Part-C 74HC595(LED表示)シフトレジスタ TOGA ランプ //////////////////
  //==============================================================================================
  // このパートはまだ調整中!これ以外で点灯するなら、以下に追加していくことになる。
  // ①Ap_Mode = (T7Avionics/ap/ap_mode);
  // ②At_mode = (T7Avionics/ap/at_mode);
  // ③Fd_Visible = (T7Avionics/ap/fd_visible);
  // ④Pitch_Mode_Armed = (T7Avionics/ap/pitch_mode_armed);
  // ⑤Pitch_Mode_Engaged = (T7Avionics/ap/pitch_mode_engaged);
  // ⑥Roll_Mode_Armed = (T7Avionics/ap/roll_mode_armed);
  // ⑦Roll_Mode_Engaged = (T7Avionics/ap/roll_mode_engaged);
  // ⑧Warn_Flags = (T7Avionics/ap/warn_flags);
  
  if (Ap_Mode == 1 && At_mode == 0 && Fd_Visible == 0 && Pitch_Mode_Armed == 0 && Pitch_Mode_Engaged == 0 && Roll_Mode_Armed == 0 && Roll_Mode_Engaged == 0 && Warn_Flags == 0) { 
   setRegisterPin(Toga_74HC595_Pin, HIGH);
  } 
  else{
    setRegisterPin(Toga_74HC595_Pin, LOW);
  }
  
}


  


  






  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  /////////// 関数 LEDピン 74HC595(出力)シフトレジスタ経由 ///////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  //####### 左パネル Part-A ##########
  //==============================================================================================
  /////////// 関数 Part-A 74HC595(LED表示)シフトレジスタ A/P ランプ //////////////////
  //==============================================================================================
  void updateAutoPilotSwLED(long value) {
    if (value == 1)  {      //T7Avionics/ap/ap_modeを見ている★
      setRegisterPin(AP_74HC595_Pin, HIGH);    //点灯 (0は74HC595のピン番号)
    } 
    else if (value == 3)  { 
      setRegisterPin(AP_74HC595_Pin, HIGH);    //点灯 
    }
    else {
      setRegisterPin(AP_74HC595_Pin, LOW);    //消灯
    }
  }
  //==============================================================================================
  /////////// 関数 Part-A 74HC595(LED表示)シフトレジスタ  A/T ランプ //////////////////
  //==============================================================================================
  //2つ以上のdatarefの組み合わせのためloop内で処理しているのでここには記述しない。
  
  //==============================================================================================
  /////////// 関数 Part-A 74HC595(LED表示)シフトレジスタ LNAV ランプ //////////////////
  //==============================================================================================
  //loop内で処理しているのでここには記述しない。
  
  //==============================================================================================
  /////////// 関数 Part-A 74HC595(LED表示)シフトレジスタ VNAV ランプ //////////////////
  //==============================================================================================
  //loop内で処理しているのでここには記述しない。

  //==============================================================================================
  /////////// 関数 Part-A 74HC595(LED表示)シフトレジスタ FLCH ランプ //////////////////
  //==============================================================================================
  //loop内で処理しているのでここには記述しない。
  
  
  //####### 中央パネル Part-B ##########
  //==============================================================================================
  /////////// 関数 Part-B 74HC595(LED表示)シフトレジスタ TOGA ランプ //////////////////
  //==============================================================================================
  //loop内で処理しているのでここには記述しない。

  //==============================================================================================
  /////////// 関数 Part-B 74HC595(LED表示)シフトレジスタ DISK ランプ //////////////////
  //==============================================================================================
  void updateDiskSwLED(long value) {
    if (value == 0) {        //T7Avionics/ap/pitch_mode_engagedを見ている
      setRegisterPin(Disk_74HC595_Pin, LOW);    //点灯
    } 
    else if (value == 8) {    
      setRegisterPin(Disk_74HC595_Pin, HIGH);    //点灯
    } 
    else {
      setRegisterPin(Disk_74HC595_Pin, LOW);    //消灯
    }
  }
  //==============================================================================================
  /////////// 関数 Part-B 74HC595(LED表示)シフトレジスタ BANK LIMIT 6モード切り替え ランプ ////////////////
  //==============================================================================================
  void updateBankLimit_chengeLED(long value) {
    if (value == 0)  {   
      setRegisterPin(bankAUTO_74HC595_Pin, HIGH);
      setRegisterPin(bank5_74HC595_Pin, LOW);
      setRegisterPin(bank10_74HC595_Pin, LOW);
      setRegisterPin(bank15_74HC595_Pin, LOW);
      setRegisterPin(bank20_74HC595_Pin, LOW);
      setRegisterPin(bank25_74HC595_Pin, LOW);
    } 
    else if (value == 1)  {
      setRegisterPin(bankAUTO_74HC595_Pin, LOW);
      setRegisterPin(bank5_74HC595_Pin, HIGH); 
      setRegisterPin(bank10_74HC595_Pin, LOW);
      setRegisterPin(bank15_74HC595_Pin, LOW);
      setRegisterPin(bank20_74HC595_Pin, LOW);
      setRegisterPin(bank25_74HC595_Pin, LOW);  
    } 
    else if (value == 2)  {
      setRegisterPin(bankAUTO_74HC595_Pin, LOW);
      setRegisterPin(bank5_74HC595_Pin, LOW);
      setRegisterPin(bank10_74HC595_Pin, HIGH);
      setRegisterPin(bank15_74HC595_Pin, LOW);
      setRegisterPin(bank20_74HC595_Pin, LOW);
      setRegisterPin(bank25_74HC595_Pin, LOW);   
    } 
   else if (value == 3)  {
      setRegisterPin(bankAUTO_74HC595_Pin, LOW);
      setRegisterPin(bank5_74HC595_Pin, LOW);
      setRegisterPin(bank10_74HC595_Pin, LOW);
      setRegisterPin(bank15_74HC595_Pin, HIGH); 
      setRegisterPin(bank20_74HC595_Pin, LOW);
      setRegisterPin(bank25_74HC595_Pin, LOW);  
    } 
    else if (value == 4)  { 
      setRegisterPin(bankAUTO_74HC595_Pin, LOW);
      setRegisterPin(bank5_74HC595_Pin, LOW);
      setRegisterPin(bank10_74HC595_Pin, LOW);
      setRegisterPin(bank15_74HC595_Pin, LOW);
      setRegisterPin(bank20_74HC595_Pin, HIGH);
      setRegisterPin(bank25_74HC595_Pin, LOW);  
    } 
    else if (value == 5)  {
      setRegisterPin(bankAUTO_74HC595_Pin, LOW);
      setRegisterPin(bank5_74HC595_Pin, LOW);
      setRegisterPin(bank10_74HC595_Pin, LOW);
      setRegisterPin(bank15_74HC595_Pin, LOW);
      setRegisterPin(bank20_74HC595_Pin, LOW);
      setRegisterPin(bank25_74HC595_Pin, HIGH);  
    } 
  }
  /*
  //==============================================================================================
  /////////// 関数 Part-B 74HC595(LED表示)シフトレジスタ HDG HOLD ランプ //////////////////
  //==============================================================================================
  //T7Avionics/ap/roll_mode_engaged
  void updateHeadingTrackHoldSwLED(long value) {
    if (value == 0)  {            
      setRegisterPin(HDG_HOLD_74HC595_Pin, HIGH);    //点灯
    }
   else if (value == 9)  {            
      setRegisterPin(HDG_HOLD_74HC595_Pin, HIGH);    //点灯
    } 
    else {
      setRegisterPin(HDG_HOLD_74HC595_Pin, LOW);     //消灯
    }
  }
  */
  
  //####### 右パネル Part-C ##########
  //==============================================================================================
  /////////// 関数 Part-C 74HC595(LED表示)シフトレジスタ V/S FPA ランプ //////////////////
  //==============================================================================================
  //ここはT7Avionics/ap/pitch_mode_engagedの値を見ている
  void updateVsFpaReferenceSwLED(long value) {
    if (value == 2) {       
      setRegisterPin(VS_FPA_74HC595_Pin, HIGH);    //点灯
      //lc4.shutdown(0, false);              //規定の高度に達したら7セグの表示が消える(true)
    } 
    else if (value == 9) {       
      setRegisterPin(VS_FPA_74HC595_Pin, HIGH);    //点灯
      //lc4.shutdown(0, false);              //規定の高度に達したら7セグの表示が消える(true)
    } 
   else {
      setRegisterPin(VS_FPA_74HC595_Pin, LOW);   //消灯
      //lc4.shutdown(0, true);               //VreticalSpeedのボタンをクリックしたら7セグを表示(false)
    }
  }
  //==============================================================================================
  /////////// 関数 Part-C 74HC595(LED表示)シフトレジスタ AUTO/1000チェンジ ランプ //////////////////
  //==============================================================================================
  void updateAUTO_1000_chengeLED(long value) {
    if (value == 1)  {   
      setRegisterPin(upAUTO_74HC595_Pin, HIGH);
      setRegisterPin(up1000_74HC595_Pin, LOW);
    } 
    if (value == 0)   {
      setRegisterPin(upAUTO_74HC595_Pin, LOW); 
      setRegisterPin(up1000_74HC595_Pin, HIGH);  
    } 
  }
  //==============================================================================================
  /////////// 関数 Part-C 74HC595(LED表示)シフトレジスタ ALT HOLD ランプ //////////////////
  //==============================================================================================
  //T7Avionics/ap/pitch_mode_engagedを見ている
  void updateAltitudeHoldSwLED(long value) {
    if (value == 1) { 
      setRegisterPin(ALT_HOLD_74HC595_Pin, HIGH);  //点灯  
    } else{ 
      setRegisterPin(ALT_HOLD_74HC595_Pin, LOW);  //消灯
    } 
  }
  //==============================================================================================
  /////////// 関数 Part-C 74HC595(LED表示)シフトレジスタ LOC ランプ //////////////////
  //==============================================================================================
  //LOCは複雑でこの1つのdatarefではコントロールできないのでloop内で処理する。ここでは使用しない。
/*
  //==============================================================================================
  /////////// 関数 Part-C 74HC595(LED表示)シフトレジスタ APP ランプ //////////////////
  //==============================================================================================
  //APPは複雑でこの1つのdatarefではコントロールできないのでloop内で処理する。ここでは使用しない
  // T7Avionics/ap/pitch_mode_armed
  void updateApproachSwLED(long value) {
    if (value == -1) {             
      setRegisterPin(APP_74HC595_Pin, HIGH);    //点灯
    } 
    else if (value == 6) {             
      setRegisterPin(APP_74HC595_Pin, HIGH);    //点灯
    } 
    else{      
      setRegisterPin(APP_74HC595_Pin, LOW);    //点灯
    } 
  }
  */