Add flash method to output devices and boards, close #22

This commit is contained in:
Ben Nuttall
2015-09-23 15:31:06 +01:00
parent 931571b85d
commit b97e97909c
2 changed files with 34 additions and 0 deletions

View File

@@ -2,6 +2,8 @@ from .input_devices import Button
from .output_devices import LED, Buzzer
from .devices import GPIODeviceError
from time import sleep
class TrafficLights(object):
def __init__(self, red=None, amber=None, green=None):
@@ -33,6 +35,14 @@ class TrafficLights(object):
for led in self._leds:
led.blink(on_time, off_time)
def flash(self, on_time=1, off_time=1, n=1):
for i in range(n):
self.on()
sleep(on_time)
self.off()
if i+1 < n: # don't sleep on final iteration
sleep(off_time)
class PiTraffic(TrafficLights):
def __init__(self):
@@ -73,6 +83,14 @@ class FishDish(TrafficLights):
def toggle_lights(self):
super(FishDish, self).toggle()
def flash_lights(self, on_time=1, off_time=1, n=1):
for i in range(n):
[led.on() for led in self.leds]
sleep(on_time)
[led.off() for led in self.leds]
if i+1 < n: # don't sleep on final iteration
sleep(off_time)
class TrafficHat(FishDish):
def __init__(self):
@@ -107,3 +125,11 @@ class PiLiter(object):
def blink(self, on_time=1, off_time=1):
for led in self._leds:
led.blink(on_time, off_time)
def flash(self, on_time=1, off_time=1, n=1):
for i in range(n):
self.on()
sleep(on_time)
self.off()
if i+1 < n: # don't sleep on final iteration
sleep(off_time)

View File

@@ -64,6 +64,14 @@ class DigitalOutputDevice(OutputDevice):
else:
self.on()
def flash(self, on_time=1, off_time=1, n=1):
for i in range(n):
self.on()
sleep(on_time)
self.off()
if i+1 < n: # don't sleep on final iteration
sleep(off_time)
class LED(DigitalOutputDevice):
pass