mirror of
https://github.com/KevinMidboe/python-gpiozero.git
synced 2025-10-29 17:50:37 +00:00
Add XmasTree Board
This commit is contained in:
@@ -43,6 +43,13 @@ TrafficLights
|
|||||||
:inherited-members:
|
:inherited-members:
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
Xmas Tree
|
||||||
|
=========
|
||||||
|
|
||||||
|
.. autoclass:: XmasTree
|
||||||
|
:inherited-members:
|
||||||
|
:members:
|
||||||
|
|
||||||
LedBorg
|
LedBorg
|
||||||
=======
|
=======
|
||||||
|
|
||||||
@@ -168,4 +175,3 @@ CompositeDevice
|
|||||||
|
|
||||||
.. autoclass:: CompositeDevice(\*args, _order=None, \*\*kwargs)
|
.. autoclass:: CompositeDevice(\*args, _order=None, \*\*kwargs)
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ from .boards import (
|
|||||||
LEDBoard,
|
LEDBoard,
|
||||||
LEDBarGraph,
|
LEDBarGraph,
|
||||||
LedBorg,
|
LedBorg,
|
||||||
|
XmasTree,
|
||||||
PiLiter,
|
PiLiter,
|
||||||
PiLiterBarGraph,
|
PiLiterBarGraph,
|
||||||
TrafficLights,
|
TrafficLights,
|
||||||
|
|||||||
@@ -550,6 +550,69 @@ class LEDBarGraph(LEDCollection):
|
|||||||
led.value = calc_value(index)
|
led.value = calc_value(index)
|
||||||
|
|
||||||
|
|
||||||
|
class XmasTree(LEDBoard):
|
||||||
|
"""
|
||||||
|
Extends :class:`LEDBoard` for `The Pi Hut's Xmas board`_: a Christmas tree
|
||||||
|
board with 3 red LEDs on each of 8 faces, and a white LED as a star on
|
||||||
|
top.
|
||||||
|
|
||||||
|
The Xmas Tree board pins are fixed and therefore there's no need to specify
|
||||||
|
them when constructing this class. The following example turns all the LEDs
|
||||||
|
on one at a time, ending in the star::
|
||||||
|
|
||||||
|
from gpiozero import XmasTree
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
tree = XmasTree()
|
||||||
|
|
||||||
|
for light in tree:
|
||||||
|
light.on()
|
||||||
|
sleep(1)
|
||||||
|
|
||||||
|
The following example turns the star LED on and sets all the red LEDs to
|
||||||
|
flicker randomly::
|
||||||
|
|
||||||
|
from gpiozero import XmasTree
|
||||||
|
from gpiozero.tools import random_values
|
||||||
|
from signal import pause
|
||||||
|
|
||||||
|
tree = XmasTree(pwm=True)
|
||||||
|
|
||||||
|
tree.star.on()
|
||||||
|
|
||||||
|
for bauble in tree.baubles:
|
||||||
|
bauble.source_delay = 0.1
|
||||||
|
bauble.source = random_values()
|
||||||
|
|
||||||
|
pause()
|
||||||
|
|
||||||
|
:param bool pwm:
|
||||||
|
If ``True``, construct :class:`PWMLED` instances for each pin. If
|
||||||
|
``False`` (the default), construct regular :class:`LED` instances.
|
||||||
|
|
||||||
|
:param bool initial_value:
|
||||||
|
If ``False`` (the default), all LEDs will be off initially. If
|
||||||
|
``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``,
|
||||||
|
the device will be switched on initially.
|
||||||
|
|
||||||
|
.. _The Pi Hut's Xmas board: https://thepihut.com/xmas
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, pwm=False, initial_value=False):
|
||||||
|
pins = (4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 2)
|
||||||
|
super(XmasTree, self).__init__(*pins, pwm=pwm, initial_value=initial_value)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def star(self):
|
||||||
|
return self[-1]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def baubles(self):
|
||||||
|
baubles = self[:-1]
|
||||||
|
return {i+1: led for i, led in enumerate(baubles)}
|
||||||
|
|
||||||
|
|
||||||
class LedBorg(RGBLED):
|
class LedBorg(RGBLED):
|
||||||
"""
|
"""
|
||||||
Extends :class:`RGBLED` for the `PiBorg LedBorg`_: an add-on board
|
Extends :class:`RGBLED` for the `PiBorg LedBorg`_: an add-on board
|
||||||
@@ -1184,4 +1247,3 @@ class Energenie(SourceMixin, Device):
|
|||||||
|
|
||||||
def off(self):
|
def off(self):
|
||||||
self.value = False
|
self.value = False
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user