|
5 | 5 | from time import sleep |
6 | 6 |
|
7 | 7 |
|
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) |
17 | 11 |
|
18 | 12 | @property |
19 | 13 | def leds(self): |
@@ -44,6 +38,23 @@ def flash(self, on_time=1, off_time=1, n=1): |
44 | 38 | sleep(off_time) |
45 | 39 |
|
46 | 40 |
|
| 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 | + |
47 | 58 | class PiTraffic(TrafficLights): |
48 | 59 | def __init__(self): |
49 | 60 | red, amber, green = (9, 10, 11) |
@@ -99,42 +110,3 @@ def __init__(self): |
99 | 110 | self.buzzer = Buzzer(5) |
100 | 111 | self.button = Button(25) |
101 | 112 | 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