Bekomme den HMC 5883L Kompass nicht zum laufen...

Hallo,

ich habe schon etliche Tutorials und Beispiel-Codes getestet, aber irgendwie funktioniert das bei mir nicht so ganz. Auch hier im Forum hatte bereits jemand dasselbe Problem wie ich, und obwohl damals ein Sketch zur Verfügung gestellt worden ist, hatte es bis zuletzt nicht geklappt, so dass er sich einen neuen Kompass gekauft hat.

Beitrag #1 ist der Code.

Durch weitere Anleitungen habe ich gesehen, dass man andere Anwender noch Offset-und Scale-Werte eintragen.
Statt der Zeile:

angle= atan2((double)y,(double)x) * (180 / 3.14159265) +180;

(die auch der Lösung aus dem Forum entspricht) verwendet der Autor:

angle= atan2((double)y * y_scale - y_offset,(double)x * x_scale - x_offset)* (180 / 3.14159265) +180;

bzw. lässt er in einer anderen Variante die Variablen y_scale und x_scale weg.

Da die Schule schon so lange zurück liegt, verstehe ich nicht, wie ich auf die in die Formel einzutragenden Werte kommen kann, oder wie atan2 überhaupt funktioniert. Ich vermute, dass ich aber vielleicht schon auf dem halben Weg bin, wenn ich mir ansehe, welche Werte mein Sensor ausgibt, wenn ich ihn drehe, während er flach auf dem Tisch liegt. Und zwar bewegen sich die Werte für X im Bereich -15 bis 318, die Werte für Y zwischen -890 und -500, sowie die Werte für Z zwischen -557 und -490. Kann mir diese Information irgendwie weiterhelfen?

Wenn ich den oben verlinkten Beispiel-Sketch verwende, wird als Kompass-Richtung übrigens bei einer vollen Umdrehung lediglich ein Wert zwischen ca. 170 und 207 Grad angezeigt.

Es kommt mir übrigens nicht darauf an, dass der Kompass am Ende völlig korrekt funktioniert (also z.B. Norden findet), solange der ausgegebene Winkel ungefähr linear mit der Drehung korreliert und je nach Ausrichtung reproduzierbar die selben Werte gezeigt werden.

Das können die Dinger im eingebauten Zustand auch nicht einfach so....
Du musst ihn zuerst mal Kalibrieren.
Nur dann ist er überhaupt in der Lage, vernünftige Daten auszuspucken. Die dann in beliebige Gradeinteilungen umzurechnen, ist dagegen ein Kinderspiel.
Such mal bitte tiefer im Forum..."HMC5883l-was treibt er?" oder so ähnlich, den Thread hab ich mal vor längerer Zeit am laufen gehabt, und mit Hilfe von jurs und einer anderen Webseite (vermutlich da verlinkt) dann wirklich gute Ergebnisse erzielt.