Hardware components | ||||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
This project was created so that I can play the FSX game as if it were realistic by pressing the switches like in a real cockpit and not in the game using a mouse.
you can see here how can make the overhead panel easy.
1 / 2
Code read all input switches, rotary encoders etc
C#Arduino code to read switches, rotary encoders etc
//FSX Arduino connect with FSXAmphiConnect application
//
//ARDUINO No A
//
//digital switches and rotary encoder switches / buttons inputs
const String ArduinoName = "A";
const int StartDigitalPin = 2;
const int EndDigitalPin = 70;
const int EncoderPinRotary38 = 38;
const int EncoderPinRotary44 = 44;
const int EncoderPinRotary42 = 42;
const int EncoderPinRotary43 = 43;
const int ContinuesButtonsPressed66 = 66;
const int ContinuesButtonsPressed69 = 69;
int LastButtonState[EndDigitalPin + EndDigitalPin];
int EncoderRotaryReaderState[EndDigitalPin + EndDigitalPin];
int ShowOnceNumberWhereIsNoPressed[EndDigitalPin + EndDigitalPin];
void setup()
{
for (int DigitalOutPin = StartDigitalPin; DigitalOutPin <= EndDigitalPin; DigitalOutPin++)
{
pinMode(DigitalOutPin, INPUT);
digitalWrite(DigitalOutPin, HIGH);
LastButtonState[DigitalOutPin] = HIGH;
ShowOnceNumberWhereIsNoPressed[DigitalOutPin] = LOW;
}
Serial.begin(115200);
}
void loop()
{
for (int DigitalOutPin = StartDigitalPin; DigitalOutPin <= EndDigitalPin; DigitalOutPin++)
{
//Encoder switch 38 or 44, 42 or 43
if (DigitalOutPin == EncoderPinRotary38 || DigitalOutPin == EncoderPinRotary44 ||
DigitalOutPin == EncoderPinRotary42 || DigitalOutPin == EncoderPinRotary43)
{
//Encoder Rotary
ReadEncoderRotaryPin(DigitalOutPin);
}
else
{
if (DigitalOutPin == ContinuesButtonsPressed66 || DigitalOutPin == ContinuesButtonsPressed69)
{
//Switch Continues Buttons Pressed
ReadContinuesButtonsPressedPin(DigitalOutPin, digitalRead(DigitalOutPin), LOW);
}
else
{
//Switch Buttons on/off
ReadSwitchPin(DigitalOutPin, digitalRead(DigitalOutPin));
}
}
}
}
void ReadEncoderRotaryPin(int SwitchPin)
{
int LastButtonStateNumber = SwitchPin;
int EncoderPinRotaryA;
int EncoderPinRotaryB;
if (SwitchPin == EncoderPinRotary38 || SwitchPin == EncoderPinRotary44)
{
EncoderPinRotaryA = EncoderPinRotary38;
EncoderPinRotaryB = EncoderPinRotary44;
}
if (SwitchPin == EncoderPinRotary42 || SwitchPin == EncoderPinRotary43)
{
EncoderPinRotaryA = EncoderPinRotary42;
EncoderPinRotaryB = EncoderPinRotary43;
}
EncoderRotaryReaderState[SwitchPin] = digitalRead(EncoderPinRotaryA);
if ((LastButtonState[SwitchPin] == HIGH) && (EncoderRotaryReaderState[SwitchPin] == LOW))
{
if (digitalRead(EncoderPinRotaryB) == LOW)
{
PrintSwitchPinCode(EncoderPinRotaryB, 0);
delay(0);
}
else
{
PrintSwitchPinCode(EncoderPinRotaryA, 0);
delay(0);
}
}
LastButtonState[SwitchPin] = EncoderRotaryReaderState[SwitchPin];
}
void ReadSwitchPin(int SwitchPin, int ButtonState)
{
if (LastButtonState[SwitchPin] == LOW && ButtonState == HIGH)
{
LastButtonState[SwitchPin] = ButtonState;
PrintSwitchPinCode(SwitchPin, ButtonState);
delay(150);
}
else
{
if (LastButtonState[SwitchPin] == HIGH && ButtonState == LOW)
{
LastButtonState[SwitchPin] = ButtonState;
PrintSwitchPinCode(SwitchPin, ButtonState);
delay(150);
}
}
}
void ReadContinuesButtonsPressedPin(int SwitchPin, int ButtonState, int NumberWhereIsNoPressed)
{
if (NumberWhereIsNoPressed == LOW && ButtonState == HIGH)
{
ShowOnceNumberWhereIsNoPressed[SwitchPin] = HIGH;
PrintSwitchPinCode(SwitchPin, ButtonState);
delay(10);
}
if (ShowOnceNumberWhereIsNoPressed[SwitchPin] == HIGH && ButtonState == LOW)
{
ShowOnceNumberWhereIsNoPressed[SwitchPin] = LOW;
PrintSwitchPinCode(SwitchPin, ButtonState);
delay(100);
}
}
void PrintSwitchPinCode(int SwitchPin, int ButtonState)
{
int PinLength = String(SwitchPin).length();
Serial.print (ArduinoName);
if (PinLength == 1)
{
Serial.print ("0");
}
Serial.print (SwitchPin); //Print the digital number
Serial.println (ButtonState); //Print the state after the digital number
}


_wzec989qrF.jpg?auto=compress%2Cformat&w=48&h=48&fit=fill&bg=ffffff)




Comments