-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoutputled.py
40 lines (38 loc) · 919 Bytes
/
outputled.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import threading
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
class OutputLED:
def __init__(self, ledPin):
self.ledPin = ledPin
GPIO.setup(self.ledPin, GPIO.OUT)
self.e = threading.Event()
self.off()
def on(self):
self.e.set()
GPIO.output(self.ledPin,True)
self.state = "on"
def off(self):
self.e.set()
GPIO.output(self.ledPin,False)
self.state = "off"
def blink(self, rate):
if self.state == "blinking":
self.e.set()
time.sleep(float(rate))
self.e.clear()
tempThread = threading.Thread(target=self.blinkThread, args=(self.e, float(rate)))
tempThread.daemon = True
tempThread.start()
self.state = "blinking"
def get_state(self):
return self.state
def blinkThread(self, e, t):
while not e.isSet():
GPIO.output(self.ledPin,True)
event_is_set = e.wait(t)
if event_is_set:
return 0
else:
GPIO.output(self.ledPin,False)
time.sleep(t)