Mercurial > maestro-servo
changeset 18:368819a07c24
Get rid of properties from servo, use normal methods
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Wed, 25 Jun 2014 16:30:58 +0200 |
| parents | 39f631544ede |
| children | 441acc81edca |
| files | maestro.py |
| diffstat | 1 files changed, 20 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/maestro.py Wed Jun 25 16:21:19 2014 +0200 +++ b/maestro.py Wed Jun 25 16:30:58 2014 +0200 @@ -1,3 +1,6 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + """ A simple library for talking to the Pololu Maestro RC servo controllers. """ @@ -60,8 +63,8 @@ self._write_byte(servo) self._write_word(accel) - def get_target(self, servo): - """Read the current target position of a servo.""" + def get_position(self, servo): + """Read the current position of a servo.""" self._write_command(0x90) self._write_byte(servo) return self._read_word() @@ -82,21 +85,13 @@ self.index = index self.reverse = reverse self.max_degrees = max_degrees - self._angle = 0 - self._speed = 0 - self._accel = 0 self.width = self.max_position - self.min_position if self.center is None: self.center = self.min_position + self.width / 2 else: self.center = center - @property - def angle(self): - return self._angle - - @angle.setter - def angle(self, degrees): + def move_degrees(self, degrees): self._angle = degrees position = (self.width * degrees) / self.max_degrees if self.reverse: @@ -105,21 +100,20 @@ target = min(self.max_position, max(self.min_position, target)) self.maestro.set_target(self.index, target) - @property - def speed(self): - return self._speed - - @speed.setter - def speed(self, degrees_per_second): - self._speed = degrees_per_second - speed = self.max_degrees / (self.width * degrees_per_second) + def set_speed(self, degrees_per_milisecond): + speed = (self.width * degrees_per_milisecond) / self.max_degrees self.maestro.set_speed(self.index, speed) - @property - def accel(self): - return self._accel + def set_accel(self, accel): + self.maestro.set_accel(self.index, accel) - @accel.setter - def accel(self, accel): - self._accel = accel - self.maestro.set_accel(self.index, accel) + def get_degrees(self): + target = self.get_position(self.index) + position = target - self.center + if self.reverse: + position = -position + return (self.max_degrees * position) / self.width + + def stop(self): + target = self.get_position(self.index) + self.maestro.set_target(self.index, target)
