-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathblinkLED.py
77 lines (68 loc) · 2.06 KB
/
blinkLED.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/python3
import os
import time
import RPi.GPIO as GPIO
"""
A class for the use of a LED ouput on Raspberry Pi.
This class provides:
- blinking functionality
"""
# - - - - - - - - - - - - - - - -
# - - - - BLINK LED CLASS - - - -
# - - - - - - - - - - - - - - - -
class BlinkLED:
def __init__(self, pin):
self.pin = pin
self.blinkCounter = 0
self.updateCounter = 0
self.slowBlinkSwitchCount = 5
self.fastBlinkSwitchCount = 2
self.LEDIsOn = False
GPIO.output(self.pin, 0)
self.mode = 'idle'
# available modes are:
# - idle
# - fastBlinkTwice
# - slowBlink
def setMode(self, mode):
self.resetUpdateCounter()
if mode is 'fastBlinkTwice':
self.mode = 'fastBlinkTwice'
elif mode is 'slowBlink':
self.mode = 'slowBlink'
elif mode is 'idle':
self.mode = 'idle'
else:
raise NameError('unknown mode.')
def update(self):
self.updateCounter += 1
if self.mode is 'idle':
GPIO.output(self.pin, 0)
self.LEDIsOn = False
elif self.mode is 'slowBlink':
self.slowBlink()
elif self.mode is 'fastBlinkTwice':
self.fastBlinkTwice()
def fastBlinkTwice(self):
if self.updateCounter >= self.fastBlinkSwitchCount:
self.resetUpdateCounter()
self.switchOutput()
self.blinkCounter += 1
if self.blinkCounter >= 3:
self.setMode('idle')
self.resetBlinkCounter()
def slowBlink(self):
if self.updateCounter >= self.slowBlinkSwitchCount:
self.resetUpdateCounter()
self.switchOutput()
def switchOutput(self):
if self.LEDIsOn:
GPIO.output(self.pin, 0)
self.LEDIsOn = False
else:
GPIO.output(self.pin, 1)
self.LEDIsOn = True
def resetUpdateCounter(self):
self.updateCounter = 0
def resetBlinkCounter(self):
self.blinkCounter = 0