Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 70 additions & 75 deletions Flight_Sim_Controller.ino
Original file line number Diff line number Diff line change
@@ -1,43 +1,46 @@
// Requires Arduino Joystick Library https://github.com/MHeironimus/ArduinoJoystickLibrary
#include <Joystick.h>
Joystick_ Joystick;


#define X_PIN A9
#define Y_PIN A8
#define Z_PIN A6
#define THROTTLE_PIN A4
#define BTN_0 7
#define BTN_1 A0
#define BTN_2 6
#define BTN_3 A1
#define BTN_4 A2
#define BTN_5 A3
#define BTN_6 A5

int JoystickX;
int JoystickY;
int JoystickZ;
int Throttle;

int currentButtonState0;
int lastButtonState0;
int currentButtonState1;
int lastButtonState1;
int currentButtonState2;
int lastButtonState2;
int currentButtonState3;
int lastButtonState3;
int currentButtonState4;
int lastButtonState4;
int currentButtonState5;
int lastButtonState5;
int currentButtonState6;
int lastButtonState6;
boolean lastButtonState0;
boolean lastButtonState1;
boolean lastButtonState2;
boolean lastButtonState3;
boolean lastButtonState4;
boolean lastButtonState5;
boolean lastButtonState6;

void setup() {
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(A0, INPUT_PULLUP);
pinMode(A1, INPUT_PULLUP);
pinMode(A2, INPUT_PULLUP);
pinMode(A3, INPUT_PULLUP);
pinMode(A4, INPUT_PULLUP);
pinMode(A5, INPUT_PULLUP);
pinMode(A6, INPUT_PULLUP);
pinMode(A7, INPUT_PULLUP);
pinMode(A8, INPUT_PULLUP);
pinMode(A9, INPUT_PULLUP);

pinMode(X_PIN, INPUT_PULLUP);
pinMode(Y_PIN, INPUT_PULLUP);
pinMode(Z_PIN, INPUT_PULLUP);
pinMode(THROTTLE_PIN, INPUT_PULLUP);
pinMode(BTN_0, INPUT_PULLUP);
pinMode(BTN_1, INPUT_PULLUP);
pinMode(BTN_2, INPUT_PULLUP);
pinMode(BTN_3, INPUT_PULLUP);
pinMode(BTN_4, INPUT_PULLUP);
pinMode(BTN_5, INPUT_PULLUP);
pinMode(BTN_6, INPUT_PULLUP);

// Initialize Joystick Library
// Initialize Joystick Library
Joystick.begin();
Joystick.setXAxisRange(0, 1024);
Joystick.setYAxisRange(0, 1024);
Expand All @@ -47,73 +50,65 @@ void setup() {

void loop() {

// Read Joystick
JoystickX = analogRead(A9); // Hall effect sensor connects to this analog pin
JoystickY = analogRead(A8); // Hall effect sensor connects to this analog pin
// Read Joystick
JoystickX = analogRead(X_PIN); // Hall effect sensor connects to this analog pin
JoystickY = analogRead(Y_PIN); // Hall effect sensor connects to this analog pin

// Read Rudder Pedals
JoystickZ = analogRead(A6); // Hall effect sensor connects to this analog pin
// Read Rudder Pedals
JoystickZ = analogRead(Z_PIN); // Hall effect sensor connects to this analog pin

// Read Throttle
Throttle = analogRead(A4); // Potentiometer signal connects to this analog pin
// Read Throttle
Throttle = analogRead(THROTTLE_PIN); // Potentiometer signal connects to this analog pin


// Read Switches
int currentButtonState0 = !digitalRead(7); // Button 0
if (currentButtonState0 != lastButtonState0)
{
Joystick.setButton(0, currentButtonState0);
lastButtonState0 = currentButtonState0;
// Read Switches
boolean currentButtonState0 = !digitalRead(BTN_0);
if (currentButtonState0 != lastButtonState0) {
Joystick.setButton(0, currentButtonState0);
lastButtonState0 = currentButtonState0;
}

int currentButtonState1 = !digitalRead(A0); // Button 1
if (currentButtonState1 != lastButtonState1)
{
Joystick.setButton(1, currentButtonState1);
lastButtonState1 = currentButtonState1;
boolean currentButtonState1 = !digitalRead(BTN_1);
if (currentButtonState1 != lastButtonState1) {
Joystick.setButton(1, currentButtonState1);
lastButtonState1 = currentButtonState1;
}

int currentButtonState2 = !digitalRead(6); // Button 2
if (currentButtonState2 != lastButtonState2)
{
Joystick.setButton(2, currentButtonState2);
lastButtonState2 = currentButtonState2;
boolean currentButtonState2 = !digitalRead(BTN_2);
if (currentButtonState2 != lastButtonState2) {
Joystick.setButton(2, currentButtonState2);
lastButtonState2 = currentButtonState2;
}

int currentButtonState3 = !digitalRead(A1); // Button 3
if (currentButtonState3 != lastButtonState3)
{
Joystick.setButton(3, currentButtonState3);
lastButtonState3 = currentButtonState3;
boolean currentButtonState3 = !digitalRead(BTN_3);
if (currentButtonState3 != lastButtonState3) {
Joystick.setButton(3, currentButtonState3);
lastButtonState3 = currentButtonState3;
}

int currentButtonState4 = !digitalRead(A2); // Button 4
if (currentButtonState4 != lastButtonState4)
{
Joystick.setButton(4, currentButtonState4);
lastButtonState4 = currentButtonState4;
boolean currentButtonState4 = !digitalRead(BTN_4);
if (currentButtonState4 != lastButtonState4) {
Joystick.setButton(4, currentButtonState4);
lastButtonState4 = currentButtonState4;
}

int currentButtonState5 = !digitalRead(A3); // Button 5
if (currentButtonState5 != lastButtonState5)
{
Joystick.setButton(5, currentButtonState5);
lastButtonState5 = currentButtonState5;
boolean currentButtonState5 = !digitalRead(BTN_5);
if (currentButtonState5 != lastButtonState5) {
Joystick.setButton(5, currentButtonState5);
lastButtonState5 = currentButtonState5;
}

int currentButtonState6 = !digitalRead(A5); // Button 6
if (currentButtonState6 != lastButtonState6)
{
Joystick.setButton(6, currentButtonState6);
lastButtonState6 = currentButtonState6;
boolean currentButtonState6 = !digitalRead(BTN_6);
if (currentButtonState6 != lastButtonState6) {
Joystick.setButton(6, currentButtonState6);
lastButtonState6 = currentButtonState6;
}

// Output Controls
// Output Controls
Joystick.setXAxis(JoystickX);
Joystick.setYAxis(JoystickY);
Joystick.setZAxis(JoystickZ);
Joystick.setThrottle(Throttle);

Joystick.sendState();

}
}