Skip to content

Commit

Permalink
Merge pull request #489 from lurch/bad_angles
Browse files Browse the repository at this point in the history
Improve error message when giving invalid angle to AngularServo
  • Loading branch information
waveform80 committed Feb 19, 2018
2 parents 3c0e44c + 3477a29 commit 58eda1e
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions gpiozero/output_devices.py
Original file line number Diff line number Diff line change
Expand Up @@ -1209,7 +1209,13 @@ def __init__(
frame_width=20/1000, pin_factory=None):
self._min_angle = min_angle
self._angular_range = max_angle - min_angle
initial_value = 2 * ((initial_angle - min_angle) / self._angular_range) - 1
if ((min_angle <= initial_angle <= max_angle) or
(max_angle <= initial_angle <= min_angle)):
initial_value = 2 * ((initial_angle - min_angle) / self._angular_range) - 1
else:
raise OutputDeviceBadValue(
"AngularServo angle must be between %s and %s, or None" %
(min_angle, max_angle))
super(AngularServo, self).__init__(
pin, initial_value, min_pulse_width, max_pulse_width, frame_width,
pin_factory=pin_factory
Expand Down Expand Up @@ -1256,12 +1262,16 @@ def angle(self):
self._min_angle, 12)

@angle.setter
def angle(self, value):
if value is None:
def angle(self, angle):
if angle is None:
self.value = None
else:
elif ((self.min_angle <= angle <= self.max_angle) or
(self.max_angle <= angle <= self.min_angle)):
self.value = (
self._value_range *
((value - self._min_angle) / self._angular_range) +
((angle - self._min_angle) / self._angular_range) +
self._min_value)

else:
raise OutputDeviceBadValue(
"AngularServo angle must be between %s and %s, or None" %
(self.min_angle, self.max_angle))

0 comments on commit 58eda1e

Please sign in to comment.