#include Joystick_ Joystick; //Code for the DCS Lighting Panel Module. Designed and written by John Ninness //Variables //Input digital pins (unchanging) const int Master_Control = 0; const int A10_Overide = 1; const int Position_Flash = 2; const int Position_Steady = 3; const int Beacon = 4; const int Signal_Light = 5; const int Compass_Light = 6; //Input analogue pins (unchanging) const int Flood_Light = A0; const int Flt_Inst_Light = A1; const int Ext_Nav_Light = A2; const int Form_Light = A3; //Input analogue values (changing) int Flood_Light_Val = 0; int Flood_Light_Last_Val = 0; int Flt_Inst_Light_Val = 0; int Flt_Inst_Light_Last_Val = 0; int Ext_Nav_Light_Val = 0; int Form_Light_Val = 0; int Form_Light_Last_Val = 0; //Input digital pins state (changing) int Position_Flash_State = 0; int Position_Steady_State = 0; int Beacon_State = 0; int Signal_Light_State = 0; int Compass_Light_State = 0; //Output Joystick Buttons (unchanging) const int Position_Flash_But = 0; const int Position_Steady_But = 1; const int Position_Off_But = 17; const int Beacon_But = 2; const int Signal_Bright_But = 3; const int Signal_Dim_But = 18; const int Compass_Light_But = 4; const int Flood_Light_But_Up = 5; const int Flood_Light_But_Down = 6; const int Form_Light_But_Up = 7; const int Form_Light_But_Down = 8; const int Flt_Inst_Light_But_Up = 10; const int Flt_Inst_Light_But_Down = 9; const int Eng_Inst_Light_But_Up = 12; const int Eng_Inst_Light_But_Down = 11; const int Aux_Inst_Light_But_Up = 14; const int Aux_Inst_Light_But_Down = 13; const int Con_Inst_Light_But_Up = 16; const int Con_Inst_Light_But_Down = 15; void setup() { Joystick.begin(); //Serial.begin(9600); //for debugging pinMode(Master_Control, INPUT_PULLUP); pinMode(A10_Overide, INPUT_PULLUP); pinMode(Position_Flash, INPUT_PULLUP); pinMode(Position_Steady, INPUT_PULLUP); pinMode(Beacon, INPUT_PULLUP); pinMode(Signal_Light, INPUT_PULLUP); pinMode(Compass_Light, INPUT_PULLUP); } void loop() { while (digitalRead(Master_Control) == LOW) { //Serial.println(digitalRead(A10_Overide));//debugging while (digitalRead(A10_Overide) == HIGH) { Flood_Light_Val = map(analogRead(Flood_Light), 50, 975, 0, 255); Joystick.setRxAxis(Flood_Light_Val); Flt_Inst_Light_Val = map(analogRead(Flt_Inst_Light), 50, 975, 0, 255); Joystick.setXAxis(Flt_Inst_Light_Val); Joystick.setYAxis(Flt_Inst_Light_Val); Joystick.setZAxis(Flt_Inst_Light_Val); Joystick.setThrottle(Flt_Inst_Light_Val); Ext_Nav_Light_Val = map(analogRead(Ext_Nav_Light), 50, 975, 0, 255); Joystick.setRyAxis(Ext_Nav_Light_Val); Form_Light_Val = map(analogRead(Form_Light), 50, 975, 0, 255); Joystick.setRzAxis(Form_Light_Val); if (digitalRead(Position_Flash) == LOW & Position_Flash_State == 0) { Joystick.pressButton(Position_Flash_But); delay(50); Joystick.releaseButton(Position_Flash_But); Position_Flash_State = 1; } else if (digitalRead(Position_Flash) == HIGH & Position_Flash_State == 1) { Joystick.pressButton(Position_Off_But); delay(50); Joystick.releaseButton(Position_Off_But); Position_Flash_State = 0; } if (digitalRead(Position_Steady) == LOW & Position_Steady_State == 0) { Joystick.pressButton(Position_Steady_But); delay(50); Joystick.releaseButton(Position_Steady_But); Position_Steady_State = 1; } else if (digitalRead(Position_Steady) == HIGH & Position_Steady_State == 1) { Joystick.pressButton(Position_Off_But); delay(50); Joystick.releaseButton(Position_Off_But); Position_Steady_State = 0; } if (digitalRead(Beacon) == LOW & Beacon_State == 0) { Joystick.pressButton(Beacon_But); delay(50); Joystick.releaseButton(Beacon_But); Beacon_State = 1; } else if (digitalRead(Beacon) == HIGH & Beacon_State == 1) { Joystick.pressButton(Beacon_But); delay(50); Joystick.releaseButton(Beacon_But); Beacon_State = 0; } if (digitalRead(Signal_Light) == LOW & Signal_Light_State == 0) { Joystick.pressButton(Signal_Dim_But); delay(50); Joystick.releaseButton(Signal_Dim_But); Signal_Light_State = 1; } else if (digitalRead(Signal_Light) == HIGH & Signal_Light_State == 1) { Joystick.pressButton(Signal_Bright_But); delay(50); Joystick.releaseButton(Signal_Bright_But); Signal_Light_State = 0; } if (digitalRead(Compass_Light) == LOW & Compass_Light_State == 0) { Joystick.pressButton(Compass_Light_But); delay(50); Joystick.releaseButton(Compass_Light_But); Compass_Light_State = 1; } else if (digitalRead(Compass_Light) == HIGH & Compass_Light_State == 1) { Joystick.pressButton(Compass_Light_But); delay(50); Joystick.releaseButton(Compass_Light_But); Compass_Light_State = 0; } delay(100); } while (digitalRead(A10_Overide) == LOW) { Flood_Light_Val = map(analogRead(Flood_Light), 50, 975, 0, 20); Flt_Inst_Light_Val = map(analogRead(Flt_Inst_Light), 50, 975, 0, 20); Form_Light_Val = map(analogRead(Form_Light), 50, 975, 0, 20); //Serial.println(Flood_Light_Val); //debugging //Serial.println(analogRead(Flood_Light)); if (Flt_Inst_Light_Val < Flt_Inst_Light_Last_Val) { Joystick.pressButton(Flt_Inst_Light_But_Down); Joystick.pressButton(Eng_Inst_Light_But_Down); Joystick.pressButton(Aux_Inst_Light_But_Down); Joystick.pressButton(Con_Inst_Light_But_Down); delay(50); Joystick.releaseButton(Flt_Inst_Light_But_Down); Joystick.releaseButton(Eng_Inst_Light_But_Down); Joystick.releaseButton(Aux_Inst_Light_But_Down); Joystick.releaseButton(Con_Inst_Light_But_Down); Flt_Inst_Light_Last_Val = Flt_Inst_Light_Val; } else if (Flt_Inst_Light_Val > Flt_Inst_Light_Last_Val) { Joystick.pressButton(Flt_Inst_Light_But_Up); Joystick.pressButton(Eng_Inst_Light_But_Up); Joystick.pressButton(Aux_Inst_Light_But_Up); Joystick.pressButton(Con_Inst_Light_But_Up); delay(50); Joystick.releaseButton(Flt_Inst_Light_But_Up); Joystick.releaseButton(Eng_Inst_Light_But_Up); Joystick.releaseButton(Aux_Inst_Light_But_Up); Joystick.releaseButton(Con_Inst_Light_But_Up); Flt_Inst_Light_Last_Val = Flt_Inst_Light_Val; } if (Flood_Light_Val < Flood_Light_Last_Val) { Joystick.pressButton(Flood_Light_But_Down); delay(50); Joystick.releaseButton(Flood_Light_But_Down); Flood_Light_Last_Val = Flood_Light_Val; } else if (Flood_Light_Val > Flood_Light_Last_Val) { Joystick.pressButton(Flood_Light_But_Up); delay(50); Joystick.releaseButton(Flood_Light_But_Up); Flood_Light_Last_Val = Flood_Light_Val; } if (Form_Light_Val < Form_Light_Last_Val) { Joystick.pressButton(Form_Light_But_Down); delay(50); Joystick.releaseButton(Form_Light_But_Down); Form_Light_Last_Val = Form_Light_Val; } else if (Form_Light_Val > Form_Light_Last_Val) { Joystick.pressButton(Form_Light_But_Up); delay(50); Joystick.releaseButton(Form_Light_But_Up); Form_Light_Last_Val = Form_Light_Val; } if (digitalRead(Position_Flash) == LOW & Position_Flash_State == 0) { Joystick.pressButton(Position_Flash_But); delay(50); Joystick.releaseButton(Position_Flash_But); Position_Flash_State = 1; } else if (digitalRead(Position_Flash) == HIGH & Position_Flash_State == 1) { Joystick.pressButton(Position_Off_But); delay(50); Joystick.releaseButton(Position_Off_But); Position_Flash_State = 0; } if (digitalRead(Position_Steady) == LOW & Position_Steady_State == 0) { Joystick.pressButton(Position_Steady_But); delay(50); Joystick.releaseButton(Position_Steady_But); Position_Steady_State = 1; } else if (digitalRead(Position_Steady) == HIGH & Position_Steady_State == 1) { Joystick.pressButton(Position_Off_But); delay(50); Joystick.releaseButton(Position_Off_But); Position_Steady_State = 0; } if (digitalRead(Beacon) == LOW & Beacon_State == 0) { Joystick.pressButton(Beacon_But); delay(50); Joystick.releaseButton(Beacon_But); Beacon_State = 1; } else if (digitalRead(Beacon) == HIGH & Beacon_State == 1) { Joystick.pressButton(Beacon_But); delay(50); Joystick.releaseButton(Beacon_But); Beacon_State = 0; } if (digitalRead(Signal_Light) == LOW & Signal_Light_State == 0) { Joystick.pressButton(Signal_Dim_But); delay(50); Joystick.releaseButton(Signal_Dim_But); Signal_Light_State = 1; } else if (digitalRead(Signal_Light) == HIGH & Signal_Light_State == 1) { Joystick.pressButton(Signal_Bright_But); delay(50); Joystick.releaseButton(Signal_Bright_But); Signal_Light_State = 0; } if (digitalRead(Compass_Light) == LOW & Compass_Light_State == 0) { Joystick.pressButton(Compass_Light_But); delay(50); Joystick.releaseButton(Compass_Light_But); Compass_Light_State = 1; } else if (digitalRead(Compass_Light) == HIGH & Compass_Light_State == 1) { Joystick.pressButton(Compass_Light_But); delay(50); Joystick.releaseButton(Compass_Light_But); Compass_Light_State = 0; } delay(100); } } }