AnalogPins geben den selben Wert aus

Hi, ich versuche gerade mit einem Joystick einen Servo und einen DC-Motor zu steuern. Leider läuft es aber nicht so wie ich will:

Die analogPins überschneiden sich irgendwie. Also lese ich über analogRead die einzelnen Pins aus, wird bei allen drei Pins der selbe Wert angezeigt. Selbst wenn nur an einem Pin ein Kabel angeschlossen ist. Habe auch schon unterschiedliche Joysticks und mehrere Beispielcodes verwendet, ändert jedoch nichts.
Hier mein Test-Code

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
Serial.println(analogRead(A0));
Serial.println(analogRead(A1));
Serial.println(analogRead(A2));


}

Hat jemand eine Idee wo das Problem sein könnte? Danke schonmal

Welcher Controller ?
Die analogen Pins brauchst du nicht als Eingang zu definieren.
Zeige mal ein Schaltbild, wie alles angeschlossen ist.

ergänze mal testweise ein delay(500) nach jeder Abfrage. Was passiert?

Das kommt höchstwahrscheinlich von dem Sample&Hold nach dem Multiplexer. Wenn extern nichts angeschlossen ist, kann der Hold-Kondensator nicht umgeladen werden.

Eine Quelle sollte nicht mehr als 50k Innenwiderstand haben, wenn der Kondensator ausreichend genau auf die Eingangsspannung aufgeladen werden soll. Bei höheren Impedanzen kann man die Werte durch mehrmaliges Lesen des selben Kanals etwas verbessern, da dann jedesmal der Kondensator ein wenig näher an die Eingangsspannung aufgeladen wird. Und da offene Eingänge eine fast unendliche Impedanz haben...

Benutze einen Arduino. Angeschlossen ist das ganze so:

ändert leider nichts...

Klingt zwar alles nicht schlecht, aber ich verstehe leider kein Wort :joy:
Was heißt das für mich? Also was kann ich verändern?

Ich würde zunächst einmal die Spannungen am Joystick mit einem Voltmeter messen. Wenn sich da nichts ändern läßt, dann ist der Joystick kaputt oder furchtbar falsch verkabelt.

Wofür ist der 3. Anschluß? Die X und Y Ausgänge sollten etwa gleich sein (512) wenn der Steuerknüppel nicht ausgelenkt wird.

der Dritte ist für die "Drück"Funktion also dass man den Joystick reindrücken kann. Manche lesen den über einen digitalen und manche über einen analogen Pin aus, das ändert bei mir bei den x-y-Werten jedoch nichts. Der X-Ausgang liegt etwa bei 510, der Y-Ausgang etwa bei 480 und "folgt" dem X-Ausgang wenn dieser höher oder niedriger wird. Also wenn ich den Joystick in X-Richtung bewege wird der X-Wert sofort 1022 und der Y-Wert nähert sich dann nach und nach der 960

Habe jetzt auch mal den Widerstand des Joysticks in verschiedenen Positionen gemessen. Da kommt mir eigentlich alles richtig vor

Das ist schön, aber die Spannungswerte wären weit aussagekräftiger. Kriechen die denn auch?

Während an zwei der fünf Anschlüssen des Joystick GND und 5V angeschlossen war?
Was hast du da wie gemessen? ( Kommt mir seltsam vor, so Widerstände messen zu können )

Den würde ich digital auslesen und den Pullup aktivieren.
Das geht auch mit dem A0 Pin.

Nein, habe mit dem Multimeter den Widerstand zwischen GND und VRX/VRY gemessen.

Des ist vielleicht praktischer, aber ändert leider nichts am Problem

Die Spannungswerte stimmen auch, in der Mitte 2,5V und ausgelenkt dementspechend 0V und 5V

Der Schalter kann ohne Pullup nicht arbeiten.
(soviel zur Praxis)

Wenn an deinem Arduino Ax Pin 5V anliegen und nicht 1023 angezeigt werden, ist dein Arduino kaputt.

Wenn das Poti 5V ausgibt, und diese nicht am Ax Pin ankommen, ist das Kabel kaputt.
Oder du hast irgend einen Bock eingebaut, den man auf dem Schaltplan nicht sehen kann.

Hallo,
Lass mal den Joystick erst mal weg. Du nimmst eine Drahtbrücke von GND auf den Eingang A0 Messung muss 0 sein , dann auf 5V muss 1023 sein, dann auf 3,3V muss 675 sein. Die jeweils andern Eingänge legst Du dabei mit Brücke auf 0V. Die sollten dann auch immer 0 anzeigen.
Dann wiederholst Du das mit dem Eingang A1.
Damit bekommst Du dann erst mal raus ob Dein Arduino noch ganz ist.
Heinz

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.