@agmue
Es ist ein Hitec Digital Servo, der auf 360° umprogrammiert wurde.
Außerdem hängt er an einem Getriebe, wobei der ServoPoti (welcher für den momentanen Ist Wert zuständig ist) an der Lastachse befestigt.
Also wenn ich dem Servo mitteile er soll auf 90° fahren, so muss er viele Umdrehungen leisten (wegen dem Getriebe) bevor er von seinem Poti mitgeteilt bekommen hat das er auf 90° ist.
Ich habe 3 unterschiedliche Digitalservos verbaut, die alle mit Getrieb und rausgeführtem Istwert Poti laufen.
So back to topic....
Die Kompass Werte kommen via bluetooth vom Smartphone. Angesteuert werden soll damit ein 3-Achsen Kamera-Motorstativ welches aus der Startstellung 180° nach links oder rechts fahren kann.
(Bisher läuft, das wenn ich das Handy nach vorne oder hinten kippe, die Kamera dem Winkel folgt.
Auch wenn ich das Handy drehe (Hoch/Quer), folgt die Kamera diesem Winkelspiel.)
Nun würde ich es noch gerne darum erweitern das es auch meiner Drehung folgt.
Wenn ich nun die Tara Taste drücke soll meine aktuelle Himmelsrichtung als Mitte festlegt werden, von der ich mich 180° nach links und 180° nach rechts drehen kann.
Der Servo wird mit einer Servo Libary angesteuert. Dieser erwartet einen Wert zwischen 0-360°, wobei 180° mein Mittelpunkt sind.
Ich hoffe es ist jetzt verständlicher worauf ich raus will.
PS: Demovideo des Stativs.
michael_x:
Aus einem Wert 0 .. 359 einen zwischen -180 und +180 zu machen, ist wohl nicht dein Problem
x-180
Bisher sieht es ungefähr so aus:
wenn Tara gedrückt DANN {korrekturwert = kompasswert;}
gewünschterwert = kompasswert - korrekturwert;
wenn gewünschterwert < 0 Dann {gewünschterwert = gewünschterwert + 360}
Ist aber auch nicht passend, da ich so nach dem Tara einen Wert von 0 habe der ich eine Richtung hoch läuft, aber in die andere Richtung gleich als nächsten Schritt 359...358...etc.
Ich hätte aber lieber 180° als Wert nach dem Tara, und von diesem +- 180° - je nach Drehrichtung...