Files
python-gpiozero/gpiozero/output_devices.py
2015-09-21 17:55:19 +01:00

61 lines
1.4 KiB
Python

from RPi import GPIO
from .devices import GPIODeviceError, GPIODevice, GPIOThread
class OutputDeviceError(GPIODeviceError):
pass
class OutputDevice(GPIODevice):
def __init__(self, pin=None):
super(OutputDevice, self).__init__(pin)
GPIO.setup(pin, GPIO.OUT)
def on(self):
GPIO.output(self.pin, True)
def off(self):
GPIO.output(self.pin, False)
class LED(OutputDevice):
def __init__(self, pin=None):
super(LED, self).__init__(pin)
self._blink_thread = None
def blink(self, on_time=1, off_time=1):
self._stop_blink()
self._blink_thread = GPIOThread(target=self._blink_led, args=(on_time, off_time))
self._blink_thread.start()
def _stop_blink(self):
if self._blink_thread:
self._blink_thread.stop()
self._blink_thread = None
def _blink_led(self, on_time, off_time):
while True:
super(LED, self).on()
if self._blink_thread.stopping.wait(on_time):
break
super(LED, self).off()
if self._blink_thread.stopping.wait(off_time):
break
def on(self):
self._stop_blink()
super(LED, self).on()
def off(self):
self._stop_blink()
super(LED, self).off()
class Buzzer(OutputDevice):
pass
class Motor(OutputDevice):
pass