Add active_high parameter to LEDBarGraph's constructor

Also adds an active_high property to LEDCollection, and fixes up some of the LEDBoard docstrings
This commit is contained in:
Andrew Scheller
2016-05-06 11:53:00 +01:00
parent 7e6cc39d71
commit 86aeab4129

View File

@@ -122,6 +122,10 @@ class LEDCollection(CompositeOutputDevice):
else: else:
yield item yield item
@property
def active_high(self):
return self[0].active_high
class LEDBoard(LEDCollection): class LEDBoard(LEDCollection):
""" """
@@ -148,21 +152,23 @@ class LEDBoard(LEDCollection):
:param bool active_high: :param bool active_high:
If ``True`` (the default), the :meth:`on` method will set all the If ``True`` (the default), the :meth:`on` method will set all the
associates pins to HIGH. If ``False``, the :meth:`on` method will set associated pins to HIGH. If ``False``, the :meth:`on` method will set
all pins to LOW (the :meth:`off` method always does the opposite). all pins to LOW (the :meth:`off` method always does the opposite). This
parameter can only be specified as a keyword parameter.
:param bool initial_value: :param bool initial_value:
If ``False`` (the default), all LEDs will be off initially. If If ``False`` (the default), all LEDs will be off initially. If
``None``, each device will be left in whatever state the pin is found ``None``, each device will be left in whatever state the pin is found
in when configured for output (warning: this can be on). If ``True``, in when configured for output (warning: this can be on). If ``True``,
the device will be switched on initially. the device will be switched on initially. This parameter can only be
specified as a keyword parameter.
:param \*\*named_pins: :param \*\*named_pins:
Sepcify GPIO pins that LEDs of the board are attached to, associated Specify GPIO pins that LEDs of the board are attached to, associating
each LED with a property name. You can designate as many pins as each LED with a property name. You can designate as many pins as
necessary and any name provided it's not already in use by something necessary and use any names, provided they're not already in use by
else. You can also specify :class:`LEDBoard` instances to create something else. You can also specify :class:`LEDBoard` instances to
trees of LEDs. create trees of LEDs.
""" """
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self._blink_leds = [] self._blink_leds = []
@@ -345,15 +351,21 @@ class LEDBarGraph(LEDCollection):
Specify the GPIO pins that the LEDs of the bar graph are attached to. Specify the GPIO pins that the LEDs of the bar graph are attached to.
You can designate as many pins as necessary. You can designate as many pins as necessary.
:param float initial_value:
The initial :attr:`value` of the graph given as a float between -1 and
+1. Defaults to 0.0. This parameter can only be specified as a keyword
parameter.
:param bool pwm: :param bool pwm:
If ``True``, construct :class:`PWMLED` instances for each pin. If If ``True``, construct :class:`PWMLED` instances for each pin. If
``False`` (the default), construct regular :class:`LED` instances. This ``False`` (the default), construct regular :class:`LED` instances. This
parameter can only be specified as a keyword parameter. parameter can only be specified as a keyword parameter.
:param bool active_high:
If ``True`` (the default), the :meth:`on` method will set all the
associated pins to HIGH. If ``False``, the :meth:`on` method will set
all pins to LOW (the :meth:`off` method always does the opposite). This
parameter can only be specified as a keyword parameter.
:param float initial_value:
The initial :attr:`value` of the graph given as a float between -1 and
+1. Defaults to 0.0. This parameter can only be specified as a keyword
parameter.
""" """
def __init__(self, *pins, **kwargs): def __init__(self, *pins, **kwargs):
@@ -361,10 +373,11 @@ class LEDBarGraph(LEDCollection):
for pin in pins: for pin in pins:
assert not isinstance(pin, LEDCollection) assert not isinstance(pin, LEDCollection)
pwm = kwargs.pop('pwm', False) pwm = kwargs.pop('pwm', False)
active_high = kwargs.pop('active_high', True)
initial_value = kwargs.pop('initial_value', 0) initial_value = kwargs.pop('initial_value', 0)
if kwargs: if kwargs:
raise TypeError('unexpected keyword argument: %s' % kwargs.popitem()[0]) raise TypeError('unexpected keyword argument: %s' % kwargs.popitem()[0])
super(LEDBarGraph, self).__init__(*pins, pwm=pwm) super(LEDBarGraph, self).__init__(*pins, pwm=pwm, active_high=active_high)
try: try:
self.value = initial_value self.value = initial_value
except: except: