Skip to content

Commit 33ca5e0

Browse files
authored
Expose release property to allow motor to hold position (#172)
1 parent fa86088 commit 33ca5e0

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

buildhat/motors.py

+47
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,28 @@ def float(self):
419419
"""Float motor"""
420420
self.pwm(0)
421421

422+
@property
423+
def release(self):
424+
"""Determine if motor is released after running, so can be turned by hand
425+
426+
:getter: Returns whether motor is released, so can be turned by hand
427+
:setter: Sets whether motor is released, so can be turned by hand
428+
:return: Whether motor is released, so can be turned by hand
429+
:rtype: bool
430+
"""
431+
return self._release
432+
433+
@release.setter
434+
def release(self, value):
435+
"""Determine if the motor is released after running, so can be turned by hand
436+
437+
:param value: Whether motor should be released, so can be turned by hand
438+
:type value: bool
439+
"""
440+
if not isinstance(value, bool):
441+
raise MotorError("Must pass boolean")
442+
self._release = value
443+
422444

423445
class MotorPair:
424446
"""Pair of motors
@@ -438,6 +460,7 @@ def __init__(self, leftport, rightport):
438460
self._leftmotor = Motor(leftport)
439461
self._rightmotor = Motor(rightport)
440462
self.default_speed = 20
463+
self._release = True
441464

442465
def set_default_speed(self, default_speed):
443466
"""Set the default speed of the motor
@@ -537,3 +560,27 @@ def run_to_position(self, degreesl, degreesr, speed=None, direction="shortest"):
537560
th2.start()
538561
th1.join()
539562
th2.join()
563+
564+
@property
565+
def release(self):
566+
"""Determine if motors are released after running, so can be turned by hand
567+
568+
:getter: Returns whether motors are released, so can be turned by hand
569+
:setter: Sets whether motors are released, so can be turned by hand
570+
:return: Whether motors are released, so can be turned by hand
571+
:rtype: bool
572+
"""
573+
return self._release
574+
575+
@release.setter
576+
def release(self, value):
577+
"""Determine if motors are released after running, so can be turned by hand
578+
579+
:param value: Whether motors should be released, so can be turned by hand
580+
:type value: bool
581+
"""
582+
if not isinstance(value, bool):
583+
raise MotorError("Must pass boolean")
584+
self._release = value
585+
self._leftmotor.release = value
586+
self._rightmotor.release = value

0 commit comments

Comments
 (0)