Da ich Dir garantiere, daß wir es nicht können, brauchen wir von Dir den GESAMTEN Sketch, den Schaltplan und die benutzten Teile (Arduino, Motortreiber und Motor).
vieles ist im Link untergebracht (auch wenn das erneute posten hier sinnvoller gewesen wäre).
Der Schaltplan von dem Ding fehlt aber und das ist hier das Problem!
Die Werte bei einem Stop (ich gehe mal davon aus, dass es sich hier um die Mittelstellung handelt im unbetätigten Zustand) sind dann schon einmal fehlerhaft.
Erwartet werden sollten hier Werte für Y = 511 und X = 511. Abweichungen der Werte um mehrere 10er Stellen sind hier durchaus üblich. Die verbauten Potis und der Hebel haben einen sehr kurzen Weg und fahren nicht 100% in Nullstellung(Mittelstellung).
Für die map-Befehle müsstest du dann entsprechend das ganze so anpacken
Y-Achse
int val_y = map(raw_y, 0, 1023, -256, 255);
X-Achse
int val_x = map(raw_x, 0, 1023, -256, 255);
Fällt der Wert von val_y auf <= 0, so sollte der Motor Rückwärts, andern falls Vorwärts fahren.
if(raw_y < 0) rw((val_y*(-1))-1);
else fw(val_y);
wenn man allerdings nicht von datenblattwerten ausgeht, sondern von den real gemessenen, würde ich das map von 0 bis 675 statt von 0 bis 1023 machen...
vieles ist im Link untergebracht (auch wenn das erneute posten hier sinnvoller gewesen wäre).
Er umschreibt den Link auf die Seite mit "Dieser hier !". Dadurch habe ich angenommen, daß er sich nur auf das Foto auf der Seite bezieht. Natürlich kann er auch den Sketch der Seite verwenden, aber dann sollte er es auch explizit schreiben.
uwefed:
Wieso glauben alle wir könnten hellsehen? Da ich Dir garantiere, daß wir es nicht können ...
Hallo Uwe! Ich erwarte nicht von dir das Du in die Zukunft schauen kannst. Wobei das natürlich schon nicht schlecht wäre. Allein schon wegen der Lottozahlen von nächster Woche
uwefed:
Natürlich kann er auch den Sketch der Seite verwenden, aber dann sollte er es auch explizit schreiben.
Zum Rätselraten habe ich keine Lust.
Grüße Uwe
Ich wollte einfach einen doppelpost vermeiden. Außer dem geht es mir erstmal darum die logik mit dem joystick zu verstehen. Daher die frage mit dem mapping.
vieles ist im Link untergebracht (auch wenn das erneute posten hier sinnvoller gewesen wäre).
Der Schaltplan von dem Ding fehlt aber und das ist hier das Problem!
Die Werte bei einem Stop (ich gehe mal davon aus, dass es sich hier um die Mittelstellung handelt im unbetätigten Zustand) sind dann schon einmal fehlerhaft.
Erwartet werden sollten hier Werte für Y = 511 und X = 511. Abweichungen der Werte um mehrere 10er Stellen sind hier durchaus üblich. Die verbauten Potis und der Hebel haben einen sehr kurzen Weg und fahren nicht 100% in Nullstellung(Mittelstellung).
Für die map-Befehle müsstest du dann entsprechend das ganze so anpacken
Y-Achse
int val_y = map(raw_y, 0, 1023, -256, 255);
X-Achse
int val_x = map(raw_x, 0, 1023, -256, 255);
Fällt der Wert von val_y auf <= 0, so sollte der Motor Rückwärts, andern falls Vorwärts fahren.
if(raw_y < 0) rw((val_y*(-1))-1);
else fw(val_y);
sschultewolter:
Erwartet werden sollten hier Werte für Y = 511 und X = 511. Abweichungen der Werte um mehrere 10er Stellen sind hier durchaus üblich. Die verbauten Potis und der Hebel haben einen sehr kurzen Weg und fahren nicht 100% in Nullstellung(Mittelstellung).
Für die map-Befehle müsstest du dann entsprechend das ganze so anpacken
Y-Achse
int val_y = map(raw_y, 0, 1023, -256, 255);
X-Achse
int val_x = map(raw_x, 0, 1023, -256, 255);
Ich verstehe was du meinst ! 0-1023 Wert was das poti liefert und -256 - 255 was das skript interpretiert. Richtig?
Nun messe ich allerdings 0-674 ! Wäre dann nicht logisch map(raw_y, 0, 674, -256, 255) !?
wenn man allerdings nicht von datenblattwerten ausgeht, sondern von den real gemessenen, würde ich das map von 0 bis 675 statt von 0 bis 1023 machen...
gruß stefan
Danke Stefan ...
Das war jetzt mein Gedanke ...
Also
Vorwärts fs = (map(joystick[0], 339, 674, -256, 255));
forward(fs);
Habe gerade festgestellt das sich die werte laufend verändern. Und siehe da eine kalte Lötstelle auf dem Joystickshield. Da waren weniger als 5Volt welches meine abwechenden Werte ausmachte. Nachgelötet und jetzt sind dort 5Volt und 1023 als maximalwert sind vorhanden.
Nun lass ich mir unteranderem die x und y Position vom joystick im Display anzeigen. Leider bleibt mir da immer die vierte stelle hängen. Es muss doch möglich sein das zu unterdrücken ... !?
ich habe auch mal einen Joystick ausgewerten und damit vier Motoren angesteuert.
Mien Tipp:
In der Nullstellung des Joysticks solltest Du einen toten Bereich legen, in dem dann elles als Nullstellung angesehen wird. Das gleiche würde ich dann bei den maximalen Ausschlägen genauso machen.
Das stellt dann eine Art Hysterese dar. Brauch auch nicht viel sein, ein paar Bitwerte langen da schon.
Damit umgehst Du das "bitflattern" von den analogen Eingängen. Zudem kann ich mir nicht vorstellen, dass die Nullstellung vom Joystick immer den gleichen Wert hat. Oder später, wenn der Joystick dann schon ein paar Jahr alt ist, immer noch so leichtgängig ist wie in seinen jungen Jahren.
Bei meiner Joystick-Auswertung hat dass auf jeden Fall viel bewirgt.
Da I2C auch mal Fehler produziert, steht dann möglicherweise Schrott auf dem Display und wird nicht gelöscht. Daher beschreibe ich immer eine ganze Zeile einschließlich festem Text und Leerzeichen.