Arduino als Controller für Simulator möglich?

Hallo zusammen,

ich suche ein Möglichkeit, die Eingabe von folgenden Funktionen per USB an einen PC zu übertragen:

  1. Joystick XY-Axen
  2. Ruderpedale Z-Axe
  3. 200 Buttons

Die eigentliche Idee ist, dass der Adunio sich als sepreates USB-Device beim PC meldet und die entsprechenden Funktonen anbietet.

Da ich keinerlei Ahnung vom Adunio habe, ergeben sich für mich folgende Fragen:
Ist eine solche Konstruktion mit dem Aduino-System überhaupt möglich?
Wenn sie möglich ist, kann man die Anforderung mit einem Board erledigen oder benötigt man mehrere Aduinos?
Wenn sie möglich ist, welche(s) Aduino-Modell(e) und welche Adunio-Zusatzboards müsste ich hierfür anschaffen?

Vielen Dank für eure Antworten im Vorraus.

Also der Arduino Leonardo arbeitet als HID-Eingabegerät.

Den Joistick kannst du mit 2 analogen Eingängen abrufen.

Die 200 Taster must du als große Matrix schalten.
Dazu empfehle ich Portexpander.

L. G. Stefan

Ja das geht theoretisch. Daten einfach per USB zu senden geht mit jedem Arduino. Wenn du den Arduino als eine echte Tastatur oder Maus möchtest brauchst du einen Leonardo.

200 Buttons ist nicht unmöglich, aber sehr aufwendig.

Aber mit 200 Tastern wird der Controller sehr unhandlich.
Wofür brauchst du denn so viele?

Die Matrix müsste dann ungefähr 16x13=208 groß sein.
Die freien 8 kannst du dann noch andersweitig nutzen.

Pulg:
ich suche ein Möglichkeit, die Eingabe von folgenden Funktionen per USB an einen PC zu übertragen:

  1. Joystick XY-Axen
  2. Ruderpedale Z-Axe
  3. 200 Buttons

Was vestehst Du genau unter "per USB"?

Daten zwischen einem Arduino und einem PC kannst Du am einfachsten über den USB-Anschluß in Form einer "virtuellen seriellen Schnittstelle" in einen PC übertragen. Alle handelsüblichen PC-Betriebssysteme (Windows, Linux, MacOS) haben entsprechende CDC-Serial Treiber bereits im Betriebssystem enthalten.

Du müßtest im PC-Programm dann nur die Möglichkeit haben, eine serielle (COM) Schnittstelle zu öffnen und auszulesen, dann kannst Du die Daten vom Arduino empfangen.

"Achsen" Daten von drei Potentiometern mit 10-Bit Auflösung (Werte 0...1023) kannst Du mit 3x2 Bytes senden, und die Stellung von 200 Buttons, kannst Du bitcodiert in 25 Bytes übertragen.

Mit der "normalen" seriellen Datenrate von 115200 Baud kannst Du bis zu 11520 Zeichen pro Sekunde übertragen. Wieviel Daten Du da rüberschaufelst, hängt vom Protokoll ab.

Wenn Du "alle Daten reihum immer wieder" senden möchtest, könntest Du bei Bedarf sicher über 100 komplette Datensätze pro Sekunde an den PC senden.

Bei den Buttons stellt sich nur die Frage: Willst Du nur testen, ob EIN Button zur Zeit von 200 gedrückt wird. Oder müssen "Schalterstellungen" ausgewertet werden, d.h. MEHR ALS EIN Button kann zur selben Zeit betätigt sein. Wenn immer nur 1-aus-200 Buttons beträtigt wird, kann die Auswertung über eine 15x15 Keypad-Matrix erfolgen, das benötigt nur 30 digitale Eingänge und keine Zusatzhardware. Wenn Du aber Viele-aus-200 Buttons auf Betätigung prüfen möchtest, benötigst Du Portexpander als Zusatzhardware. Um da auf 200 zu kommen, werden wohl schon einige Klimmzüge mit Zusatzhardware notwendig sein. Zum Beispiel können von diesen bis zu 8 Stück kombiniert werden, so dass Du auf 8*16 = 128 I/O-Pins am I2C kommen kannst.

Wenn es auf Platzbedarf nicht ankommt, würde ich wohl nicht auf Portexpander setzen, sondern einfach 4 Stk. Arduino MEGA-Boards kombinieren: Drei Boards sammeln je Daten von je 60 Buttons und senden die Daten zuerst an ein viertes "Master-Board", das dann noch die Daten von 20 weiteren Buttons und den 3-Achsen-Potentiometern sammelt, und dann alles insgesamt an den PC weitersendet.

Man kann auch mit einer Matrix mehrere Tasten gleichzeitig erkennen. Mit Einschränkungen.

Bei Tastaturen läuft das unter dem Stichwort "key rollover". Kann man z.B. hier testen:

Wenn man eine halbwegs gute Tastatur hat, sind wahrscheinlich die Tasten um ASWD herum so optimiert dass man die gleichzeitig drücken kann. Und in der rechten Hälfte sieht es anders aus. Das ist vor allem bei Gaming Tastaturen der Fall. Meine hat wohl 6-KRO, was üblich ist.

Dabei werden einfach die Tasten so verdrahtet dass sie von den Spalten und Zeilen her so liegen, dass es keine Überschneidungen gibt. Das wird hier gut erklärt:

Das läuft da als "Ghosting", wobei Ghosting genau genommen das Phänomen ist dass bei einer solchen Kombination Tastendrücke ausgelöst werden die gar nicht existieren.

Hallo,

mein Neffe hat den Atmega16U2 auf seinen Uno umgeflasht, sodass der Arduino als USB HID-Tastatur am PC erkannt wird. Am Arduino selbst war ein Touchscreen angeschlossen, worauf er eine Tastatur programmiert hat. Drückte man auf die Touchscreen-Tastatur, erschienen die Buchstaben am PC im Editor. Fand ich total Klasse! :slight_smile:

Dann hat er den 16U2 wieder zurückgeflasht und der Uno war wieder der ganz der Alte. :wink:

Das Flashtool war irgendwas kleines von Atmel und die Infos wie das geht und wie man das macht hatte er im Internet rausgelesen. Bei Bedarf kann ich ihn mal näher fragen.

Edit: das Flashtool heißt "Atmel Flip", fiel mir gerade ein

Für mich hört sich das nach einen Flugsimulator an :slight_smile:

Die Erste frage die ich hier habe ist welche Software Läuft denn auf den Rechnern? im Hintergrund?

Was möchtest du alles Simulieren? hier gibt es unterschiedliche Stufen.

In der Regel sind da im Hinterfund mehrere Server im Einsatz, z.B. einer alleine für das Wetter,
dann gibt es auch einen der die befehle annimmt hier stellt sich die Frage was benötigt hier die Software die darauf laufen tut?

ich glaube nicht das hier alle machbar ist, jedoch habe ich mich mit der Software noch nie beschäftigt dafür :frowning:
dafür hatte ich schon fast mal ein altes Flugzeug Cockpit auf der Rechnung stehen.

Mir kommt die zahl von 200 Schaltern nur etwas gering vor hast du hier nicht eine Nullen vergessen?
kann mir nicht vorstellen das das nur 200 Schalter sein sollen.

Gruß Mücke

Hallo,

da von "Joystick XY-Achsen" die Rede ist, bedeutet "über USB" wahrscheinlich ein Gamepad keine Tastatur.

Für den Leonardo kann ich da hier nichts fertiges finden, die Standard Arduino Bibliotheken unterstützen nur Maus und Tastatur.

Für den Uno gibt es Projekte wie unojoy , die den 16U2 umflashen.

Ansonsten kann ich ja zum zweiten Mal diese Woche zu ARM verlinken. Für deren USB Lib findet man recht einfache Beispiele für Gamepads und Joysticks:
http://developer.mbed.org/users/wim/notebook/usb-joystick-device/

Kommt darauf an. Ein Leonardo, Micro oder DUE kann vom PC als Mouse oder Tastatur gesehen werden.

Jetzt ist die Frage wie sieht der PC das Eingabegerät? als Tastatur oder Mouse ok dann geht es mit einem Arduino. Anders? weiß nicht.

Grüße Uwe.