Skip to content

Commit d47aff9

Browse files
committed
Make TrafficLights extend LEDBoard
1 parent 12800db commit d47aff9

File tree

1 file changed

+20
-48
lines changed

1 file changed

+20
-48
lines changed

gpiozero/boards.py

Lines changed: 20 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,9 @@
55
from time import sleep
66

77

8-
class TrafficLights(object):
9-
def __init__(self, red=None, amber=None, green=None):
10-
if not all([red, amber, green]):
11-
raise GPIODeviceError('Red, Amber and Green pins must be provided')
12-
13-
self.red = LED(red)
14-
self.amber = LED(amber)
15-
self.green = LED(green)
16-
self._leds = (self.red, self.amber, self.green)
8+
class LEDBoard(object):
9+
def __init__(self, leds):
10+
self._leds = tuple(LED(led) for led in leds)
1711

1812
@property
1913
def leds(self):
@@ -44,6 +38,23 @@ def flash(self, on_time=1, off_time=1, n=1):
4438
sleep(off_time)
4539

4640

41+
class PiLiter(LEDBoard):
42+
def __init__(self):
43+
leds = (4, 17, 27, 18, 22, 23, 24, 25)
44+
super(PiLiter, self).__init__(leds)
45+
46+
47+
class TrafficLights(LEDBoard):
48+
def __init__(self, red=None, amber=None, green=None):
49+
if not all([red, amber, green]):
50+
raise GPIODeviceError('Red, Amber and Green pins must be provided')
51+
52+
self.red = LED(red)
53+
self.amber = LED(amber)
54+
self.green = LED(green)
55+
self._leds = (self.red, self.amber, self.green)
56+
57+
4758
class PiTraffic(TrafficLights):
4859
def __init__(self):
4960
red, amber, green = (9, 10, 11)
@@ -99,42 +110,3 @@ def __init__(self):
99110
self.buzzer = Buzzer(5)
100111
self.button = Button(25)
101112
self._all = self._leds + (self.buzzer,)
102-
103-
104-
class LEDBoard(object):
105-
def __init__(self, leds):
106-
self._leds = tuple(LED(led) for led in leds)
107-
108-
@property
109-
def leds(self):
110-
return self._leds
111-
112-
def on(self):
113-
for led in self._leds:
114-
led.on()
115-
116-
def off(self):
117-
for led in self._leds:
118-
led.off()
119-
120-
def toggle(self):
121-
for led in self._leds:
122-
led.toggle()
123-
124-
def blink(self, on_time=1, off_time=1):
125-
for led in self._leds:
126-
led.blink(on_time, off_time)
127-
128-
def flash(self, on_time=1, off_time=1, n=1):
129-
for i in range(n):
130-
self.on()
131-
sleep(on_time)
132-
self.off()
133-
if i+1 < n: # don't sleep on final iteration
134-
sleep(off_time)
135-
136-
137-
class PiLiter(LEDBoard):
138-
def __init__(self):
139-
leds = (4, 17, 27, 18, 22, 23, 24, 25)
140-
super(PiLiter, self).__init__(leds)

0 commit comments

Comments
 (0)