Gibt es digitale Joystick-Shields mit 4/5 Tastern?

Moin ihr Weihnachtsbastler :wink:

ich finde im Netz etliche Joystick / 2-Axis Controller für den Dino, die aber alle mit zwei Potis also analog arbeiten.
Eigentlich suche ich die "simple" Version mit Tastern statt Potis, so dass ich für jede Richtung ein Tastsignal habe welches ich dann mit einem Widerstands-Netzwerk auf einen Analog-Pin des Dinos legen kann.

Natürlich kann ich mir einfach vier Taster im Kreuz in ein Gehäuse setzen, mir gefällt aber die Möglichkeit es über einen kleinen Knüppel zu steuern wie eben bei den angebotenen Shields.

Und nein, ich möchte keine Lösung ala mit dem Arduino auslesen und zu einem "Schaltsignal" wandeln, ich suche eine autakte Lösung die mir auf zwei Leitungen verschiedene Werte je nach Richtung ausgibt.

Für hilfreiche Hinweise rufe ich eine extrem schöne Bescherung aus!

Danke :wink:

Gibt es so nicht. Schaltplan. Da bleibt nur die Möglichkeit, dass selber zu machen. Schaltplan zeichnen, Layout zeichen, ätzen lassen, ...

Wo ist das Problem, 2 Achsen auszulesen? Alternativ kann man auch einen PS2 Kontroller nehmen und diesen über den Bus auslesen. Da hast du dann auch gleichzeitig noch einige Taster dabei. Jedoch sind es dann auch mehr als 2 Pins die benötigt werden.

Das geht so wie Du meinst nicht. Digitale Joystichs kannst Du auch 45° auslenken und darum 2 Tasten gleichzeitig drücken. Bei einem einfachen Widerstandsnetzwerk kannst Du nicht 2 Tastendrücke gleichzeitig detektieren.
Grüße Uwe

Ich würde einen IR Empfänger nehmen und dann das Steuerkreuz von einer beliebigen IR Fernbedienung.

Dann reicht 1 Pin vom Arduino.

Gruß,

Helmuth

Hallo Leute und danke für eure Antworten.

Wie bereits geschrieben will ich KEINE Lösung die vom Arduino noch weiter ausgewertet werden muss.
Ich habe eine (für mein Verständnis) sehr aufwendige "Software" auf dem Arduino laufen die aktuell prima mit einem LCD-Shield und den darauf verbauten Tasten funktioniert.
An dem Code möchte ich nichts (ausser evtl. die Widerstände anzupassen) ändern, jedoch die Microtaster durch eine besser zu bedienende Lösung ersetzen.

Am besten würde mir dafür eben ein Kreuzknüppel gefallen, am einfachsten wäre es einfach vier Taster zu nehmen, gefällt mir aber nicht für die "ordentliche" Gehäuselösung.

Ich überlege ja schon ob ich mir so einen digitalen Kreuzknüppel mit vier Tastern selbst fräse, direkt mit einer "Kreuzführung" dran um den guten Hinweis von Uwe zu beachten und eine 45° Bewegung zu verhindern.

Die Idee mit der IR Fernbedienung ist cool, aber für meine angedachte Gehäuselösung eher nicht tauglich.

JochenK:
ich finde im Netz etliche Joystick / 2-Axis Controller für den Dino, die aber alle mit zwei Potis also analog arbeiten.
Eigentlich suche ich die "simple" Version mit Tastern statt Potis, so dass ich für jede Richtung ein Tastsignal habe welches ich dann mit einem Widerstands-Netzwerk auf einen Analog-Pin des Dinos legen kann.

Solche Schalter-Joysticks waren nur bis Anfang der Achtziger Jahre des letzten Jahrhunderts üblich. Bereits eine Sega-Megadrive Konsole von Ende der Achtziger hatte einen analogen Kreuzknüppel.

Soweit ich sehe, gibt es auf eBay immer noch (völlig überteuerte) Angebote für Retro-Joysticks, bei denen der Kreuzknüppel nur Schalter betätigt, siehe beispielsweise eBay Nr. 381253801583

Zum Auslesen dürfte es aber mit einem Widerstandsnetzwerk und Analogpin Essig sein: Diese Kontroller betätigen beim diagonalen Bewegen des Kreuzknüppels jeweils 2 verschiedene Schalter, und Mehrfach-Schaltbetätigungen lassen sich per Widerstandsnetzwerk kaum sinnvoll auslesen, sondern für die vier Schalter des Kreuzknüppels brauchst Du vier digitale Pins, wenn das sauber ausgelesen werden soll.

JochenK:
Und nein, ich möchte keine Lösung ala mit dem Arduino auslesen und zu einem "Schaltsignal" wandeln, ich suche eine autakte Lösung die mir auf zwei Leitungen verschiedene Werte je nach Richtung ausgibt.

Gängig auf dem Arduino ist es, "Nintendo Nunchuck" Controller auszulesen. Das sind eigentlich Nebencontroller für die die zweite Hand bei der Nintendo Wii Spieleconsole. Die funktionieren mit Auslesen per I2C und beim freundlichen Chinesen gibt es so kleine Adapter (einfach bei eBay mal "Arduino Nunchuck" als Suchbegriff verwenden), um solche Controller mittels Adapter am Arduino-I2C anzuschließen. Auslesen voll digital per I2C.

Als Signale stellt der Controller übrigens nicht nur einen analogen Kreuzknüppel und zwei Schalter zur Verfügung, sondern auch Daten von einem 3-Achsen-Beschleunigungssensor.

Siehe auch:
https://www.dpunkt.de/leseproben/3692/4%20Wii-Nunchuk.pdf

Wenn Dein Gerät bereits I2C verwendet (z.B. für eine RTC), brauchst Du sogar nichtmal einen einzigen zusätzlichen Pin, um auch noch den Nunchuck-Controller anzusteuern.

Oder Du lötest die 4 Microtaster vom Shield aus und platzierst sie neu in Form eines Kreuzes.

Dann einen gedruckten / gefrästen Steuerknüppel auf einem Kreuz mit Heißkleber auf die beweglichen Zylinder kleben und fertig?!

jurs:
Solche Schalter-Joysticks waren nur bis Anfang der Achtziger Jahre des letzten Jahrhunderts üblich. Bereits eine Sega-Megadrive Konsole von Ende der Achtziger hatte einen analogen Kreuzknüppel.

Da seht ihr mal auf welchem technischen Stand ich mich befinde :wink:

Ich hätte ja nichts dagegen eine Schalktung mit einem der überall erhältlichen Joysticks/Pads zu bauen, aber eben nicht für das aktuelle Projekt. Der Sourcecode ist dermaßen umfangreich und Komplex (für mich der ihn nur nutzt und nicht geschrieben hat) das ich mich strikt weigere diesen zu ändern.
Entweder nehme ich den einfachen weg mit normalen Tastern, oder ich bastel mit einen Kreuzknüppel aus den 80ern mit vier Tastern am Wiederstandsnetzwerk und mit "Diagonalsperre".

Da ich Idiot gestern einen Uno und das darauf aufgesteckte Display durch Kurzschluss geschrottet habe.... Kann ich auch bis ein neues Display da ist mich mit der Fräse beschäftigen.

Kann ich ein " single-1602 Display" mit I2C Steuerung eigentlich 1:1 gegen ein DFRobot 1602 mit Tasten drauf tauschen und die Tasten extern legen oder ist für die I2C Steuerung ein anderer Displaycode notwendig?

JochenK:
Kann ich ein " single-1602 Display" mit I2C Steuerung eigentlich 1:1 gegen ein DFRobot 1602 mit Tasten drauf tauschen und die Tasten extern legen oder ist für die I2C Steuerung ein anderer Displaycode notwendig?

Meinst den Unterschied zwischen I2C und parallel? Da ist nur die Initialisierung anders wenn man die passende Library verwendet.

Ein I2C Display gegen ein anderes zu tauschen kann gehen. Aber die sind nicht immer 100%ig zueinander kompatibel. Aber auch hier unterscheiden sich verschiedene I2C Libraries meistens nur in der Initialisierung des Displays.

JochenK:
Kann ich ein " single-1602 Display" mit I2C Steuerung eigentlich 1:1 gegen ein DFRobot 1602 mit Tasten drauf tauschen und die Tasten extern legen oder ist für die I2C Steuerung ein anderer Displaycode notwendig?

Für das LCD Keypad Shield im 4-Bit Parallel-Modus liefert die Arduino-IDE bereits eine LiquidCrystal-Library mit.

Aber für per I2C angeschlossene Displays, benötigst Du eine passende externe Library, die Du von einem Drittanbieter herunterladen und selbst richtig konfigurieren musst, damit das Display korrekt angesteuert wird. Außerdem muss die Drittanbieter-Library zur Arduino-IDE-Version passen, sonst kann es beispielsweise Probleme geben, eine zwei Jahre alte LiquidCrystal_I2C-Library überhaupt mit einer Arduino-IDE-Version aus diesem Jahr auch nur fehlerfrei zu kompilieren. Meistens sind die externen Drittanbieter LiquidCrystal_I2C-Libraries von den Funktionsbezeichnungen her weitestgehend kompatibel zur Arduino-LiquidCrystal-Library, so dass außer der Initialisierung in einem vorhandenen Sketch meist nur geringe Änderungen bei der Umstellung notwendig sind.

Danke euch für die Info zu den Displays, ja ich meinte die 4-Bit Parallel Variante die ich bis zu dem "Rauchwölkchen" erfolgreich eingesetzt habe und gegen ein Display mit I2C Schnittstelle tauschen wollte.

Letzteres hätte mir für meinen Gehäuseeinbau besser gefallen, aber ich werde wohl erst mal ein neues Keypad mit 4-Bit bestellen.
Ich bin einfach zu schissig an dem vorhandenen Sourcecode Änderungen zu probieren wo er gerade so gut läuft... Dafür fehlt mir das entsprechende KnowHow :frowning:

Aber zusätzlich besorge ich mir auch so ein I2C Display um mich daran mal zu versuchen und mir anzusehen welche Änderungen notwendig wären.

Danke euch!

JochenK:
Ich bin einfach zu schissig an dem vorhandenen Sourcecode Änderungen zu probieren wo er gerade so gut läuft... Dafür fehlt mir das entsprechende KnowHow :frowning:

Wie gesagt, es ist eigentlich nur die Initialisierung anders. Also Konstruktor und begin()/init(). Das sind zwei Zeilen

Der Rest mit setCusor(), print(), etc. ist identisch. Da haben sich praktisch alle Programmierer an das gleiche Schema gehalten.

Oh so easy?
Na das würde ich mir dann doch "zutrauen" testweise mal zu ändern :wink:
Danke für die Info!

Sobald die Teile da sind werde ich mich dazu noch mal melden.