Mercurial > maestro-servo
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)
