Skip to content

Commit c0de025

Browse files
committed
Merge branch 'no_initial_angle' of https://github.com/lurch/python-gpiozero into angular_initial_none
2 parents bb0eced + 39264a3 commit c0de025

File tree

2 files changed

+33
-3
lines changed

2 files changed

+33
-3
lines changed

gpiozero/output_devices.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1212,7 +1212,9 @@ def __init__(
12121212
frame_width=20/1000, pin_factory=None):
12131213
self._min_angle = min_angle
12141214
self._angular_range = max_angle - min_angle
1215-
if ((min_angle <= initial_angle <= max_angle) or
1215+
if initial_angle is None:
1216+
initial_value = None
1217+
elif ((min_angle <= initial_angle <= max_angle) or
12161218
(max_angle <= initial_angle <= min_angle)):
12171219
initial_value = 2 * ((initial_angle - min_angle) / self._angular_range) - 1
12181220
else:

tests/test_outputs.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,10 @@ def setup_function(function):
6161
'test_servo_close',
6262
'test_servo_pulse_width',
6363
'test_servo_values',
64+
'test_servo_initial_values',
6465
'test_angular_servo_range',
6566
'test_angular_servo_angles',
67+
'test_angular_servo_initial_angles',
6668
) else MockPin
6769

6870
def teardown_function(function):
@@ -1014,7 +1016,7 @@ def test_servo_pins_nonpwm():
10141016

10151017
def test_servo_close():
10161018
p = Device.pin_factory.pin(2)
1017-
with Servo(1) as device:
1019+
with Servo(2) as device:
10181020
device.close()
10191021
assert device.closed
10201022
assert device.pwm_device.pin is None
@@ -1023,7 +1025,7 @@ def test_servo_close():
10231025

10241026
def test_servo_pulse_width():
10251027
p = Device.pin_factory.pin(2)
1026-
with Servo(1, min_pulse_width=5/10000, max_pulse_width=25/10000) as device:
1028+
with Servo(2, min_pulse_width=5/10000, max_pulse_width=25/10000) as device:
10271029
assert isclose(device.min_pulse_width, 5/10000)
10281030
assert isclose(device.max_pulse_width, 25/10000)
10291031
assert isclose(device.frame_width, 20/1000)
@@ -1035,6 +1037,19 @@ def test_servo_pulse_width():
10351037
device.value = None
10361038
assert device.pulse_width is None
10371039

1040+
def test_servo_initial_values():
1041+
p = Device.pin_factory.pin(2)
1042+
with Servo(2) as device:
1043+
assert device.value == 0
1044+
with Servo(2, initial_value=-1) as device:
1045+
assert device.value == -1
1046+
with Servo(2, initial_value=0) as device:
1047+
assert device.value == 0
1048+
with Servo(2, initial_value=1) as device:
1049+
assert device.value == 1
1050+
with Servo(2, initial_value=None) as device:
1051+
assert device.value is None
1052+
10381053
def test_servo_values():
10391054
p = Device.pin_factory.pin(1)
10401055
with Servo(1) as device:
@@ -1068,6 +1083,19 @@ def test_angular_servo_range():
10681083
assert device.min_angle == 0
10691084
assert device.max_angle == 90
10701085

1086+
def test_angular_servo_initial_angles():
1087+
p = Device.pin_factory.pin(1)
1088+
with AngularServo(1) as device:
1089+
assert device.angle == 0
1090+
with AngularServo(1, initial_angle=-90) as device:
1091+
assert device.angle == -90
1092+
with AngularServo(1, initial_angle=0) as device:
1093+
assert device.angle == 0
1094+
with AngularServo(1, initial_angle=90) as device:
1095+
assert device.angle == 90
1096+
with AngularServo(1, initial_angle=None) as device:
1097+
assert device.angle is None
1098+
10711099
def test_angular_servo_angles():
10721100
p = Device.pin_factory.pin(1)
10731101
with AngularServo(1) as device:

0 commit comments

Comments
 (0)