-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path__init__.py~
More file actions
152 lines (128 loc) · 6.85 KB
/
__init__.py~
File metadata and controls
152 lines (128 loc) · 6.85 KB
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# External module imports
import RPi.GPIO as GPIO
import time
# Pin Definitons:
butDoorBell1Pin = 17 # pin 11
butDoorBell2Pin = 27 # pin 13
butDoorRelease1Pin = 22 # pin 15
butDoorRelease2Pin = 23 # pin 16
doorBellLed1Pin = 4 # pin 7 / Relay CH1
doorBellLed2Pin = 18 # pin 12 / Relay CH2
doorBellBuzzerPin = 27 # pin 13 / Relay CH3
doorRelease1Pin = 22 # pin 15 / Relay CH4
doorRelease2Pin = 23 # pin 16 / Relay CH5
doorReleaseLed1Pin = 24 # pin 18 / Relay CH6
doorReleaseLed2Pin = 25 # pin 22 / Relay CH7
free1Pin = 5 # pin 29 / Relay CH8
# Pin Setup:
GPIO.setmode(GPIO.BCM) # Broadcom pin-numbering scheme
GPIO.setup(butDoorBell1Pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Button pin set as input w/ pull-up
GPIO.setup(butDoorBell2Pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Button pin set as input w/ pull-up
GPIO.setup(butDoorRelease1Pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Button pin set as input w/ pull-up
GPIO.setup(butDoorRelease2Pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Button pin set as input w/ pull-up
GPIO.setup(doorBellLed1Pin, GPIO.OUT) # LED pin set as output
GPIO.setup(doorBellLed2Pin, GPIO.OUT) # LED pin set as output
GPIO.setup(doorBellBuzzerPin, GPIO.OUT) # Buzzer pin set as output
GPIO.setup(doorRelease1Pin, GPIO.OUT) # Door Release pin set as output
GPIO.setup(doorRelease2Pin, GPIO.OUT) # Door Release pin set as output
GPIO.setup(doorReleaseLed1Pin, GPIO.OUT) # LED pin set as output
GPIO.setup(doorReleaseLed2Pin, GPIO.OUT) # LED pin set as output
# Initial state for LEDs and Relays:
GPIO.output(doorBellLed1Pin, GPIO.LOW)
GPIO.output(doorBellLed2Pin, GPIO.LOW)
GPIO.output(doorBellBuzzerPin, GPIO.LOW)
GPIO.output(doorRelease1Pin, GPIO.LOW)
GPIO.output(doorRelease2Pin, GPIO.LOW)
GPIO.output(doorReleaseLed1Pin, GPIO.LOW)
GPIO.output(doorReleaseLed2Pin, GPIO.LOW)
#Variables
doorbell1PressLoopCount = -1
doorbell1LedBlinkCount = -1
doorbell2PressLoopCount = -1
doorbell2LedBlinkCount = -1
doorbellPressLoopMax = 100
doorRelease1PressLoopCount = -1
doorRelease2PressLoopCount = -1
doorReleasePressLoopMax = 100
doorReleaseCount = -1
print("Program Started. Press CTRL+C to exit")
try:
while 1:
# Door Bell Button Presses
# Door Bell 1 Button Press
if GPIO.input(butDoorBell1Pin) == False and (doorbell1PressLoopCount <= 0 or doorbell1PressLoopCount >= doorbellPressLoopMax): # button is pressed
print("Door Bell 1 Pressed")
doorbell1PressLoopCount = 0
if doorbell1PressLoopCount >= 0:
doorbell1PressLoopCount = doorbell1PressLoopCount + 1
if doorbell1PressLoopCount == 1 or doorbell1LedBlinkCount >= 0:
doorbell1LedBlinkCount = doorbell1LedBlinkCount + 1
if doorbell1LedBlinkCount <= 20:
GPIO.output(doorBellLed1Pin, GPIO.HIGH)
elif doorbell1LedBlinkCount > 20 and doorbell1LedBlinkCount < 40:
GPIO.output(doorBellLed1Pin, GPIO.LOW)
else:
doorbell1LedBlinkCount = 0
GPIO.output(doorBellBuzzerPin, GPIO.HIGH)
if doorbell1PressLoopCount > doorbellPressLoopMax:
doorbell1PressLoopCount = -1
doorbell1LedBlinkCount = -1
GPIO.output(doorBellLed1Pin, GPIO.LOW)
# END: Door Bell 1 Button Press
# Door Bell 2 Button Press
if GPIO.input(butDoorBell2Pin) == False and (doorbell2PressLoopCount <= 0 or doorbell2PressLoopCount >= doorbellPressLoopMax): # button is pressed
print("Door Bell 2 Pressed")
doorbell2PressLoopCount = 0
if doorbell2PressLoopCount >= 0:
doorbell2PressLoopCount = doorbell2PressLoopCount + 1
if doorbell2PressLoopCount == 1 or doorbell2LedBlinkCount >= 0:
doorbell2LedBlinkCount = doorbell2LedBlinkCount + 1
if doorbell2LedBlinkCount <= 20:
GPIO.output(doorBellLed2Pin, GPIO.HIGH)
elif doorbell2LedBlinkCount > 20 and doorbell2LedBlinkCount < 40:
GPIO.output(doorBellLed2Pin, GPIO.LOW)
else:
doorbell2LedBlinkCount = 0
GPIO.output(doorBellBuzzerPin, GPIO.HIGH)
if doorbell2PressLoopCount > doorbellPressLoopMax:
doorbell2PressLoopCount = -1
doorbell2LedBlinkCount = -1
GPIO.output(doorBellLed2Pin, GPIO.LOW)
# END: Door Bell 2 Button Press
if doorbell1PressLoopCount == -1 and doorbell2PressLoopCount == -1:
GPIO.output(doorBellBuzzerPin, GPIO.LOW)
# END: Door Bell Button Presses
# Door Latch Release Button Presses
if GPIO.input(butDoorRelease1Pin) == False and (doorRelease1PressLoopCount <= 0 or doorRelease1PressLoopCount >= doorReleasePressLoopMax): # button is released
if GPIO.input(butDoorRelease1Pin) == False:
print("Door Release 1 Pressed")
doorRelease1PressLoopCount = 0
if GPIO.input(butDoorRelease2Pin) == False and (doorRelease2PressLoopCount <= 0 or doorRelease2PressLoopCount >= doorReleasePressLoopMax): # button is released
if GPIO.input(butDoorRelease2Pin) == False:
print("Door Release 2 Pressed")
doorRelease2PressLoopCount = 0
# Door Latch 1 Release Button Press
if doorRelease1PressLoopCount >= 0:
doorRelease1PressLoopCount = doorRelease1PressLoopCount + 1
GPIO.output(doorRelease1Pin, GPIO.HIGH)
GPIO.output(doorReleaseLed1Pin, GPIO.HIGH)
if doorRelease1PressLoopCount >= doorReleasePressLoopMax:
doorRelease1PressLoopCount = -1
GPIO.output(doorRelease1Pin, GPIO.LOW)
GPIO.output(doorReleaseLed1Pin, GPIO.LOW)
# END: Door Latch 1 Release Button Press
# Door Latch 2 Release Button Press
if doorRelease2PressLoopCount >= 0:
doorRelease2PressLoopCount = doorRelease2PressLoopCount + 1
GPIO.output(doorRelease2Pin, GPIO.HIGH)
GPIO.output(doorReleaseLed2Pin, GPIO.HIGH)
if doorRelease2PressLoopCount >= doorReleasePressLoopMax:
doorRelease2PressLoopCount = -1
GPIO.output(doorRelease2Pin, GPIO.LOW)
GPIO.output(doorReleaseLed2Pin, GPIO.LOW)
# END: Door Latch 2 Release Button Press
# END: Door Latch Release Button Presses
if doorRelease1PressLoopCount >= 0 or doorRelease2PressLoopCount >= 0 or doorbell1PressLoopCount >= 0 or doorbell2PressLoopCount >= 0:
time.sleep(0.01)
except KeyboardInterrupt: # If CTRL+C is pressed, exit cleanly:
GPIO.cleanup() # cleanup all GPIO