ATC Steuerung

Alles rund um den Bau von Homecockpit Simulationen
Antworten
Benutzeravatar
Hannes
Administrator
Beiträge: 27
Registriert: Mi 17. Jan 2018, 10:32
Kontaktdaten:

ATC Steuerung

Beitrag von Hannes » Mo 23. Apr 2018, 16:12

Hallo,

Hab mal eine kleine HID USB Tastatur für die Steuerung des Flugsimulator integrierten Flugfunks gebaut. Die Elektronik ist ein Arduino Leo/Micro als HID Tastatur programmiert. Ist somit ein Universal-Eingabegerät, dass bei jedem Simulator verwendet werden kann. Die Tastenbelegung kann entweder im Flugsimulatorprogramm oder aber auch auf der Tastatur angepasst werden.

20180418_201055.jpg
20180418_201051.jpg
Unbenannt.JPG

Stelle euch hier den Code für den Arduino Leonardo zur Verfügung. Bei Fragen einfach melden ...

Code: Alles auswählen

/*
  Keyboard Tastenbefehle werden an den PC übergeben. Der PC
  denkt dabei, dass es von der normalen Tastatur kommt. Somit
  Universell bei jedem System einsetzbar.

  Hannes Dobersberger
  Jänner 2018
*/

#include "Keyboard.h"

const int buttonPin2 = 2;          // input Pins für die Taster
const int buttonPin3 = 3;
const int buttonPin4 = 4;
const int buttonPin5 = 5;
const int buttonPin6 = 6;
const int buttonPin7 = 7;
const int buttonPin8 = 8;
const int buttonPin9 = 9;
const int buttonPin10 = 10;
int previousButtonState2 = LOW;   // Status der Taster wird abgefragt
int previousButtonState3 = LOW;
int previousButtonState4 = LOW;
int previousButtonState5 = LOW;
int previousButtonState6 = LOW;
int previousButtonState7 = LOW;
int previousButtonState8 = LOW;
int previousButtonState9 = LOW;
int previousButtonState10 = LOW;

void setup() {
  // aus den Tastern einen Input machen
  pinMode(buttonPin2, INPUT_PULLUP);
  pinMode(buttonPin3, INPUT_PULLUP);
  pinMode(buttonPin4, INPUT_PULLUP);
  pinMode(buttonPin5, INPUT_PULLUP);
  pinMode(buttonPin6, INPUT_PULLUP);
  pinMode(buttonPin7, INPUT_PULLUP);
  pinMode(buttonPin8, INPUT_PULLUP);
  pinMode(buttonPin9, INPUT_PULLUP);
  pinMode(buttonPin10, INPUT_PULLUP);
  
  // Start der Keyboard Emulation
  Keyboard.begin();
}

void loop() {
  // read the pushbutton:
  int buttonState2 = digitalRead(buttonPin2);
  // if the button state has changed,
  if ((buttonState2 != previousButtonState2)
      // and it's currently pressed:
      && (buttonState2 == LOW)) {

    // Schreibt den Befehl an den PC
    Keyboard.write(KEY_LEFT_ARROW);
  delay(2000);
  Keyboard.write(KEY_RIGHT_ARROW);
  delay(2000);
  }
  // liest den Status der Taster
  int buttonState3 = digitalRead(buttonPin3);
  // if the button state has changed,
  if ((buttonState3 != previousButtonState3)
      // Abfrage ob Taster gedrückt
      && (buttonState3 == LOW)) {

    // Schreibt den Befehl an den PC
    Keyboard.print("1");
  }
  // liest den Status der Taster
  int buttonState4 = digitalRead(buttonPin4);
  // if the button state has changed,
  if ((buttonState4 != previousButtonState4)
      // and it's currently pressed:
      && (buttonState4 == LOW)) {

    // Schreibt den Befehl an den PC
    Keyboard.print("2");
  }
  // liest den Status der Taster
  int buttonState5 = digitalRead(buttonPin5);
  // if the button state has changed,
  if ((buttonState5 != previousButtonState5)
      // and it's currently pressed:
      && (buttonState5 == LOW)) {

    // Schreibt den Befehl an den PC
    Keyboard.print("3");
  }
  // liest den Status der Taster
  int buttonState6 = digitalRead(buttonPin6);
  // if the button state has changed,
  if ((buttonState6 != previousButtonState6)
      // and it's currently pressed:
      && (buttonState6 == LOW)) {

    // Schreibt den Befehl an den PC
    Keyboard.print("4");
  }
  // liest den Status der Taster
  int buttonState7 = digitalRead(buttonPin7);
  // if the button state has changed,
  if ((buttonState7 != previousButtonState7)
      // and it's currently pressed:
      && (buttonState7 == LOW)) {

    // Schreibt den Befehl an den PC
    Keyboard.print("5");
  }
  // liest den Status der Taster
  int buttonState8 = digitalRead(buttonPin8);
  // if the button state has changed,
  if ((buttonState8 != previousButtonState8)
      // and it's currently pressed:
      && (buttonState8 == LOW)) {

    // Schreibt den Befehl an den PC
    Keyboard.print("6");
  }
  // liest den Status der Taster
  int buttonState9 = digitalRead(buttonPin9);
  // if the button state has changed,
  if ((buttonState9 != previousButtonState9)
      // and it's currently pressed:
      && (buttonState9 == LOW)) {

    // Schreibt den Befehl an den PC
    Keyboard.print("7");
  }
  // liest den Status der Taster
  int buttonState10 = digitalRead(buttonPin10);
  // if the button state has changed,
  if ((buttonState10 != previousButtonState10)
      // and it's currently pressed:
      && (buttonState10 == LOW)) {

    // Schreibt den Befehl an den PC
    Keyboard.print("8");
  }
  // Speichert den aktuellen Status der Taster für die nächste Abfrage
  previousButtonState2 = buttonState2;
  previousButtonState3 = buttonState3;
  previousButtonState4 = buttonState4;
  previousButtonState5 = buttonState5;
  previousButtonState6 = buttonState6;
  previousButtonState7 = buttonState7;
  previousButtonState8 = buttonState8;
  previousButtonState9 = buttonState9;
  previousButtonState10 = buttonState10;
}

Antworten