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),
|
right_motor=Motor(*right),
|
||||||
_order=('left_motor', 'right_motor'))
|
_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):
|
def forward(self, speed=1):
|
||||||
"""
|
"""
|
||||||
Drive the robot forward by running both motors forward.
|
Drive the robot forward by running both motors forward.
|
||||||
|
|||||||
@@ -617,20 +617,34 @@ def test_robot():
|
|||||||
assert (
|
assert (
|
||||||
[device.pin for device in robot.left_motor] +
|
[device.pin for device in robot.left_motor] +
|
||||||
[device.pin for device in robot.right_motor]) == pins
|
[device.pin for device in robot.right_motor]) == pins
|
||||||
|
assert robot.value == (0, 0)
|
||||||
robot.forward()
|
robot.forward()
|
||||||
assert [pin.state for pin in pins] == [1, 0, 1, 0]
|
assert [pin.state for pin in pins] == [1, 0, 1, 0]
|
||||||
|
assert robot.value == (1, 1)
|
||||||
robot.backward()
|
robot.backward()
|
||||||
assert [pin.state for pin in pins] == [0, 1, 0, 1]
|
assert [pin.state for pin in pins] == [0, 1, 0, 1]
|
||||||
|
assert robot.value == (-1, -1)
|
||||||
robot.forward(0.5)
|
robot.forward(0.5)
|
||||||
assert [pin.state for pin in pins] == [0.5, 0, 0.5, 0]
|
assert [pin.state for pin in pins] == [0.5, 0, 0.5, 0]
|
||||||
|
assert robot.value == (0.5, 0.5)
|
||||||
robot.left()
|
robot.left()
|
||||||
assert [pin.state for pin in pins] == [0, 1, 1, 0]
|
assert [pin.state for pin in pins] == [0, 1, 1, 0]
|
||||||
|
assert robot.value == (-1, 1)
|
||||||
robot.right()
|
robot.right()
|
||||||
assert [pin.state for pin in pins] == [1, 0, 0, 1]
|
assert [pin.state for pin in pins] == [1, 0, 0, 1]
|
||||||
|
assert robot.value == (1, -1)
|
||||||
robot.reverse()
|
robot.reverse()
|
||||||
assert [pin.state for pin in pins] == [0, 1, 1, 0]
|
assert [pin.state for pin in pins] == [0, 1, 1, 0]
|
||||||
|
assert robot.value == (-1, 1)
|
||||||
robot.stop()
|
robot.stop()
|
||||||
assert [pin.state for pin in pins] == [0, 0, 0, 0]
|
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():
|
def test_ryanteck_robot():
|
||||||
pins = [MockPWMPin(n) for n in (17, 18, 22, 23)]
|
pins = [MockPWMPin(n) for n in (17, 18, 22, 23)]
|
||||||
|
|||||||
Reference in New Issue
Block a user