changeset 11:d5a830b67bf9

Measure servo angle from the center
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Mon, 23 Jun 2014 20:08:13 +0200
parents 6795df4c66ba
children 885ca625da11
files maestro.py
diffstat 1 files changed, 6 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/maestro.py	Mon Jun 23 18:19:10 2014 +0200
+++ b/maestro.py	Mon Jun 23 20:08:13 2014 +0200
@@ -87,25 +87,17 @@
 
     @property
     def angle(self):
-        target = self.maestro.get_target(self.index)
-        if self.reverse:
-            position = self.min_position + target
-        else:
-            position = self.max_position - target
-        angle = int(position / (self.max_position -
-                                self.min_position) * self.max_degrees)
-        self._angle = angle
-        return angle
+        return self._angle
 
     @angle.setter
     def angle(self, degrees):
         self._angle = degrees
-        position = ((self.max_position - self.min_position) *
-                    degrees) / self.max_degrees
+        width = self.max_position - self.min_position
+        position = (width * degrees) / self.max_degrees
         if self.reverse:
-            target = self.max_position - position
-        else:
-            target = self.min_position + position
+            position = -position
+        center = self.max_position + width / 2
+        target = center + position
         self.maestro.set_target(self.index, target)
 
     @property