mirror of
https://github.com/KevinMidboe/python-gpiozero.git
synced 2025-10-29 17:50:37 +00:00
@@ -776,6 +776,20 @@ class Robot(SourceMixin, CompositeDevice):
|
||||
right_motor=Motor(*right),
|
||||
_order=('left_motor', 'right_motor'))
|
||||
|
||||
@property
|
||||
def value(self):
|
||||
"""
|
||||
Represents the motion of the robot as a tuple of (left_motor_speed,
|
||||
right_motor_speed) with ``(-1, -1)`` representing full speed backwards,
|
||||
``(1, 1)`` representing full speed forwards, and ``(0, 0)``
|
||||
representing stopped.
|
||||
"""
|
||||
return super(Robot, self).value
|
||||
|
||||
@value.setter
|
||||
def value(self, value):
|
||||
self.left_motor.value, self.right_motor.value = value
|
||||
|
||||
def forward(self, speed=1):
|
||||
"""
|
||||
Drive the robot forward by running both motors forward.
|
||||
|
||||
@@ -617,20 +617,34 @@ def test_robot():
|
||||
assert (
|
||||
[device.pin for device in robot.left_motor] +
|
||||
[device.pin for device in robot.right_motor]) == pins
|
||||
assert robot.value == (0, 0)
|
||||
robot.forward()
|
||||
assert [pin.state for pin in pins] == [1, 0, 1, 0]
|
||||
assert robot.value == (1, 1)
|
||||
robot.backward()
|
||||
assert [pin.state for pin in pins] == [0, 1, 0, 1]
|
||||
assert robot.value == (-1, -1)
|
||||
robot.forward(0.5)
|
||||
assert [pin.state for pin in pins] == [0.5, 0, 0.5, 0]
|
||||
assert robot.value == (0.5, 0.5)
|
||||
robot.left()
|
||||
assert [pin.state for pin in pins] == [0, 1, 1, 0]
|
||||
assert robot.value == (-1, 1)
|
||||
robot.right()
|
||||
assert [pin.state for pin in pins] == [1, 0, 0, 1]
|
||||
assert robot.value == (1, -1)
|
||||
robot.reverse()
|
||||
assert [pin.state for pin in pins] == [0, 1, 1, 0]
|
||||
assert robot.value == (-1, 1)
|
||||
robot.stop()
|
||||
assert [pin.state for pin in pins] == [0, 0, 0, 0]
|
||||
assert robot.value == (0, 0)
|
||||
robot.value = (-1, -1)
|
||||
assert robot.value == (-1, -1)
|
||||
robot.value = (0.5, 1)
|
||||
assert robot.value == (0.5, 1)
|
||||
robot.value = (0, -0.5)
|
||||
assert robot.value == (0, -0.5)
|
||||
|
||||
def test_ryanteck_robot():
|
||||
pins = [MockPWMPin(n) for n in (17, 18, 22, 23)]
|
||||
|
||||
Reference in New Issue
Block a user