Du bist nicht mit dem Internet verbunden.
Wissen

So baut ihr euch euren eigenen Game-Controller

Manchmal ist einfach kein Controller der Richtige. Zu wenig Knöpfe, nicht authentisch genug. Was macht man in so einem Fall? Man bastelt sich das Teil ganz einfach selbst.

Die Tasten am Joystick und Schubhebel sind alle belegt. Ich könnte jetzt die Tastatur benutzen. Aber wenn ich das Steuerrad loslassen muss, um «F2» zu suchen, geht die Illusion kaputt. Ein richtiger Ablöscher ist, wenn man dazu noch die VR-Brille abnehmen muss.

Ergo muss eine weitere Bedienkonsole den Job übernehmen. Und die bauen wir uns selbst.

Aber Vorsicht: Wir müssen dazu die Tastatur-Eingabe emulieren. Im Unterschied zur echten Flugzeug-Steuerung kennt eine Tastatur aber nur zwei Positionen. Nämlich gedrückt oder nicht gedrückt. Bei der Emulation ist es also nicht möglich, zu berücksichtigen, ob der Schalter für das Fahrwerk auf «ausgefahren» oder «eingezogen» steht. Das muss im laufenden Programm abgeglichen werden. Man kann nur den Zustand wechseln (toggeln), also ein- oder ausfahren. Nicht aber «nur einziehen» und «nur ausfahren» ausser das Programm verwenden dafür zwei Tasten.

Die Voraussetzungen

Für unseren Controller benötigen wir folgende Zutaten:

  • 1 Arduino Leonardo (oder Micro oder Due, die eine USB-Tastatur emulieren können)
  • Die benötigte Anzahl Knöpfe, Buttons und Taster (achten auf "tastend" oder "Nicht-rastend", Schalter funktionieren nur bedingt)
  • 1 1k-Widerstand
  • Dünner Draht oder Litze
  • 1-2 Schraubzwingen, um den Controller zu befestigen
  • Einen 3D-Drucker oder Holz, eine Säge und nach Bedarf etwas Farbe

2+
CHF 2399.–
Ultimaker 2+
Zufriedenstellende Ausdrucke, unabhängig von der Komplexität. Inkl. Olsson Block
8

Verfügbarkeit

Postversand

  • nur noch 1 Stück
    in unserem Lager

PickMup

Abholen

  • Basel: übermorgen auf 13:10h
  • Bern: übermorgen auf 12:45h
  • Dietikon: übermorgen auf 14:30h
  • Genf: übermorgen auf 13:30h
  • Kriens: nur noch 1 Stück
  • Lausanne: übermorgen auf 15:40h
  • St. Gallen: übermorgen auf 15:30h
  • Winterthur: heute um 12:45
  • Wohlen: heute um 11:00
  • Zürich: übermorgen auf 12:30h

Bei sofortiger Bestellung.
Alle Angaben ohne Gewähr.

Details anzeigen

Leonardo (ATmega32u4)
CHF 32.–
Arduino Leonardo (ATmega32u4)

Verfügbarkeit

Postversand

  • ca. 3-5 Tage
    > 5 Stück versandbereit ab externem Lager

Abholen

  • Alle Standorte: ca. 4-6 Tage
    Aktuell > 5 Stück beim Lieferanten an Lager

Bei sofortiger Bestellung.
Alle Angaben ohne Gewähr.

Details anzeigen

Metalfilm Res. 1/4W 1K
CHF 4.35
Velleman Metalfilm Res. 1/4W 1K
2

Verfügbarkeit

Postversand

  • ca. 2 Wochen
    Aktuell > 5 Stück beim Lieferanten an Lager

Abholen

  • Alle Standorte: ca. 2-3 Wochen
    Aktuell > 5 Stück beim Lieferanten an Lager

Bei sofortiger Bestellung.
Alle Angaben ohne Gewähr.

Details anzeigen

Lötzinn Wickel 10 g Ø 0,5 mm
CHF 2.30
Donau Lötzinn Wickel 10 g Ø 0,5 mm
Mindest Bestellmenge 1 Stk.

Verfügbarkeit

Postversand

  • nur noch 2 Stück
    in unserem Lager

PickMup

Abholen

  • Basel: übermorgen auf 13:10h
  • Bern: übermorgen auf 12:45h
  • Dietikon: übermorgen auf 14:30h
  • Genf: übermorgen auf 13:30h
  • Kriens: übermorgen auf 11:20h
  • Lausanne: übermorgen auf 15:40h
  • St. Gallen: übermorgen auf 15:30h
  • Winterthur: heute um 12:45
  • Wohlen: heute um 11:00
  • Zürich: übermorgen auf 12:30h

Bei sofortiger Bestellung.
Alle Angaben ohne Gewähr.

Details anzeigen

Kupfer-Litze 10m Schwarz Extra Dünn
CHF 6.30
Donau Kupfer-Litze 10m Schwarz Extra Dünn
Mindest Bestellmenge 1 Stk.

Verfügbarkeit

  • ca. 2-3 Wochen
    Aktuell > 5 Stück beim Lieferanten an Lager

Bei sofortiger Bestellung.
Alle Angaben ohne Gewähr.

Details anzeigen

Die elektrischen Verbindungen sind sehr einfach, hier ein Schema für zwei Tasten:

Die Software

Das Programm für den Arduino ist dank der enthaltenen Keyboard-Bibliothek sehr einfach. Man definiert welcher Schalter/Taster an welchem Pin hängt. Dann legt man fest, welcher Buchstabe oder welches Zeichen von welchem Taster gesendet wird (z.B. ein J wenn die Taste am Pin 6 gedrückt wird). Die Anschlüsse (Pins) müssen als Eingang (Input) eingestellt werden und der integrierte Pull-Up-Widerstand muss aktiviert werden. Damit werden die Anschlüsse hochgezogen auf 5 Volt (3,3 Volt beim Due), was einer «1», «An» oder «High» entspricht. Wird dann eine Taste gedrückt, wird der Pegel auf «0», «Aus» oder «Low» gezogen. Und in der Endlosschleife (loop) werden die Tasten laufend nacheinander abgefragt. Bei einem Tastendruck wird das entsprechende Zeichen gesendet.

Der Quellcode ist sehr einfach und kann beliebig ausgebaut werden. Zum Beispiel mit Interrupt wenn eine Taste losgelassen wird oder man ermöglicht, dass mehrere Tasten gleichzeitig gedrückt werden können. Komplizierter geht immer 😉.

Den vollständigen Code für den Arduino als auch für den Druck findet ihr auf Github.

Das Gehäuse

Fehlt nur noch ein Gehäuse. Das kann aus Holz oder anderem Material gebaut werden. Man kann aber auch ein bestehendes Gehäuse verwenden oder eines mit einem 3D-Drucker drucken.

Welt-Druck21.jpeg
Wissen
Marc Schaffer

Marc Schaffer

Mitglied seit September 2016

Aktivität Level Punkte Rang
0
101
25'777
Badge
Benutzerprofil
  • 22 7

3D-Druck - vier hilfreiche Antworten für Beginner

Ich habe ein sehr einfaches Gehäuse entworfen. Es besteht aus einem Viereck, dem ein kleineres Viereck abgezogen wurde, einer zusätzlichen Leiste als Tischkantenauflage, Löcher für die Schalter und Stützen für den Arduino und die Schraubzwingen. Und zu Guter Letzt ein Deckel als Abschluss. Auch hier gilt: Komplizierter geht immer, z.B. schräge Wände, Rundungen und so weiter.

Gebaut habe ich es für den Einsatz mit der Oculus Rift. Daher die Auflage für an die Tischkante und die Verschraubung. Damit man es blind ertasten kann, sind alle Tasten und Schalter unterschiedlich. Die dunkelgelbe Farbe hilft, damit man die Details besser erkennen kann. Schwarze Schalter in schwarzem Gehäuse sind auf dem Foto schlecht zu sehen und im Cyberspace wenn man die Brille trägt, kann man die Farbe ja sowieso nicht sehen 😉.

  • Die Höhe bestimmt der Arduino plus zweimal die Wandstärke (ein paar Millimeter Platzreserve sind immer gut).
  • Die Breite wird bestimmt durch die Summe der Schalter und Taster mit genügend Abstand nebeneinander gelegt.
  • Die Tiefe bestimmen ebenfalls die Schalter mit zusätzlich etwas Abstand für die Kabel.

Die Schwierigkeit ist die Anordnung, damit sich Schrauben, Bauteile und Abdeckungen nicht in die Quere kommen. Ist mir bei der zweiten Schraube passiert. Eine Schraubzwinge musste ich ein wenig kürzen und etwas Material entfernen, da der Arduino den Weg versperrte. (Immer diese Entscheidungen: Anpassen durch Absägen oder umkonstruieren).

OpenSCAD-121.jpeg
Inspiration
Marc Schaffer

Marc Schaffer

Mitglied seit September 2016

Aktivität Level Punkte Rang
0
101
25'777
Badge
Benutzerprofil
  • 6 4

DIY Adapter für HTC Vive Base Station

Ich habe ein Modell des Arduinos erstellt, mit den Zylindern für die Schrauben Löcher und dem USB-Anschluss und dem Platzhalter für den Stecker:

Dann habe ich die Taster und Bedienelemente genommen und nebeneinander gelegt bis die Abstände passten und habe die Löcher bestimmt und in ein Modul verpackt:

Dieses Modul kann wiederverwertet und alle Teile darin auf einmal positioniert und ausgerichtet werden. Nun kommt das Gehäuse dazu, verschoben um 3 mm für die Wandstärke und seitlich noch je 1 mm Abstand zum Arduino: Länge zusammengezählt aus den einzelnen Abständen. Sieht etwas wild aus, ist aber bei Korrekturen sehr nützlich.

Damit aus dem massiven Viereck ein Gehäuse wird, berechnen wir den Innenraum:

Umgedreht und vom Gehäuse das Innenvolumen und USB-Stecker weggerechnet sieht es schon fast wie das fertige Gehäuse aus.

Blenden wir den Arduino-Platzhalter aus und passen das Schaltermodul ein, dann ist der grösste Teil erledigt.

Die beiden Zylinder für die Schraubenlöcher passen nicht. Lassen wir sie weg und fügen die Abstandshalter und die Ummantelungen für die Schraubzwingen hinzu.

Fehlen nur noch die Rechtecke, um Platz auszusparen für die Schraubzwingen.

Schlussendlich muss nur noch alles in Reihenfolge gebracht werden:

  • Gehäuse
  • minus Innenvolumen
  • minus USB-Stecker
  • dies Verschachtelt plus Abstandshalter plus Ummantelungen
  • und vom Ganzen noch die Schraubenlöcher und Schraubzwingen abgezogen

Nun noch rendern, exportieren als STL-Datei und durch den Slicer geht es ab in den Drucker.

Während der Drucker für rund zwei Stunden beschäftigt ist, designen wir noch den Deckel. Idealerweise die bestehende Datei unter neuem Namen speichern und weiter bearbeiten. Wie am Anfang verwenden wir wieder den Arduino Platzhalter, verschieben und kürzen die Abstandshalter.

Dann fügen wir ein Rechteck als Deckel ein und ein Rechteck als seitliche Führung. Dann wieder alles in eine Gruppe zusammenfassen und die Löcher und Schraubzwinge abziehen.

Fazit

So «einfach» bastelt ihr euch euren eigenen, einzigartigen Controller. Wenn ihr keinen Game-Controller braucht, könnt ihr die Tastatur-Emulation auch für ganz andere Zwecke einsetzen. Zum Beispiel mit einem Fusspedal die Shift-Taste betätigen. Der Fantasie sind praktisch keine Grenzen gesetzt.

Das könnte dich auch interessieren

AdobeStock_6885209421.jpeg
Produktwissen
Marc Schaffer

Marc Schaffer

Mitglied seit September 2016

Aktivität Level Punkte Rang
0
101
25'777
Badge
Benutzerprofil
  • 14 10

Eintauchen in den Cyberspace, doch mit welcher VR-Brille?

raspberrypiboard21.jpeg
Wissen
Marc Schaffer

Marc Schaffer

Mitglied seit September 2016

Aktivität Level Punkte Rang
0
101
25'777
Badge
Benutzerprofil
  • 10 11

Raspberry Pi oder Arduino, welcher für welchen Zweck?

maus_rep21.jpeg
Wissen
Marc Schaffer

Marc Schaffer

Mitglied seit September 2016

Aktivität Level Punkte Rang
0
101
25'777
Badge
Benutzerprofil
  • 11 4

Hol dir die Lizenz zum Löten!

User

Marc Schaffer

Ich bin ein digitaler Ureinwohner der Generation Commodore 64, online seit Wählscheibe und Akustikkoppler. Neben Videospielen hole ich gerne mit dem 3D-Drucker Dinge aus dem Cyberspace in den Makerspace. Technologie ist einfach faszinierend.

8 Kommentare

User xmxmx

Nichts für ungut, aber räum bitte deinen Code auf.
- Rück den Code ein.
- Auch haben deutsche Variablen im Code nichts zu suchen. Das gilt auch für Kommentare.

11.02.2017
Missbrauch melden

Du musst dich anmelden um einen Missbrauch zu melden.

User m.windu

Netter Kommentar, für jemanden der sich die Mühe gemacht hat, so viel Interessantes an unwissendere Personen weiterzugeben.

Komisch, dass er den Artikel geschrieben hat und nicht du.

13.02.2017
Missbrauch melden

Du musst dich anmelden um einen Missbrauch zu melden.

User xmxmx

Netter Kommentar, für jemanden der den Code gesichtet und konstruktive Kritik geliefert hat.

Komisch, dass ich konstruktive Kritik geliefert habe und nicht du.

13.02.2017
Missbrauch melden

Du musst dich anmelden um einen Missbrauch zu melden.

User m.windu

Wäre mir neu, dass "Nichts für ungut, aber räum bitte deinen Code auf" irgendwie mit konstruktiver Kritik zu tun hat.

14.02.2017
Missbrauch melden

Du musst dich anmelden um einen Missbrauch zu melden.

User xmxmx

Dann würde ich etwas weiter lesen. Der Teil alleine, den du zitiert hast, ist sicherlich keine konstruktive Kritik, hätte ich es so stehen gelassen. Meine Begründung und dazugehörige Lösungsvorschläge machen es aber zu einer.
Ich habe ihm mitgeteilt, was er noch verbessern könnte und dazugehörige Beispiele.
Ich glaube, dir ist einfach nur langweilig, vertreibe deine Zeit stattdessen damit:
NICI My First NICI Löwe Lumba

14.02.2017
Missbrauch melden

Du musst dich anmelden um einen Missbrauch zu melden.

User m.windu

Dein Produktvorschlag gefällt mir aber sehr gut, danke. Hast du den auch zum letzten Geburtstag erhalten? :).

14.02.2017
Missbrauch melden

Du musst dich anmelden um einen Missbrauch zu melden.

Du musst angemeldet sein, um auf einen Kommentar zu antworten.

User stefanjud

Ein Array mit allen Werten plus Index des gewünschten Pins. Dann ein Loop, bei dem das Array abgearbeitet wird.
Dadurch wird der Code viel einfacher und ist nicht so repetitiv. Zudem kann einfach das Array erweitert werden um eine neue Taster zu definieren...

11.02.2017
Missbrauch melden

Du musst dich anmelden um einen Missbrauch zu melden.

Du musst angemeldet sein, um auf einen Kommentar zu antworten.


Bitte melde dich an.

Du musst angemeldet sein, um einen neuen Kommentar zu erfassen.

Corporate logo