changeset 7:942b81279a73

Use properties for servo position, speed and acceleration
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Mon, 23 Jun 2014 18:12:41 +0200
parents c6b9391e2d89
children 339f62d7fef3
files maestro.py
diffstat 1 files changed, 36 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/maestro.py	Mon Jun 23 17:57:02 2014 +0200
+++ b/maestro.py	Mon Jun 23 18:12:41 2014 +0200
@@ -81,8 +81,25 @@
         self.index = index
         self.revers = reverse
         self.max_degrees = max_degrees
+        self._angle = 0
+        self._speed = 0
+        self._accel = 0
 
-    def set_angle(self, degrees):
+    @property
+    def angle(self):
+        target = self.maestro.get_position(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
+
+    @angle.setter
+    def angle(self, degrees):
+        self._angle = degrees
         position = ((self.max_position - self.min_position) *
                     degrees) / self.max_degrees
         if self.reverse:
@@ -90,3 +107,21 @@
         else:
             target = self.min_position + position
         self.maestro.set_position(self.index, target)
+
+    @property
+    def speed(self):
+        return self._speed
+
+    @speed.setter
+    def set_speed(self, speed):
+        self._speed = speed
+        self.maestro.set_speed(self.index, speed)
+
+    @property
+    def accel(self):
+        return self._accel
+
+    @accel.setter
+    def set_speed(self, accel):
+        self._speed = accel
+        self.maestro.set_accel(self.index, accel)