-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathup.py
More file actions
117 lines (87 loc) · 3.14 KB
/
up.py
File metadata and controls
117 lines (87 loc) · 3.14 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
import time
import sys
import RPi.GPIO as GPIO
# UP contains 8 bursts 4*up1 then 4*up2
up = 'up'
up_1 = '101011100110110000100001010111100111111101111111111110100110011000'
up_2 = '101011100110110000100001010111100111111101111111111011011101100110'
down = 'down'
down_1 = '101011100110110000100001010111100111111101111111110111100100101000'
down_2 = '101011100110110000100001010111100111111101111111111011011101100110'
stop = 'stop'
stop_1 = '101011100110110000100001010111100111111101111111111011100101101000'
short_delay = 0.000140
long_delay = 0.000540
extended_delay = 0.005400
mid_delay = 0.12
cleaning_delay = 0.5
NUM_ATTEMPTS = 4
TRANSMIT_PIN = 23
def encode(code):
for i in code:
if i == '1':
GPIO.output(TRANSMIT_PIN, 1)
time.sleep(short_delay)
GPIO.output(TRANSMIT_PIN, 0)
time.sleep(long_delay)
#print " 1 sent"
elif i == '0':
GPIO.output(TRANSMIT_PIN, 1)
time.sleep(long_delay)
GPIO.output(TRANSMIT_PIN, 0)
time.sleep(short_delay)
#print " 0 sent"
else:
continue
def transmit_code(code):
'''Transmit a chosen code string using the GPIO transmitter'''
#print "entering code"
GPIO.setmode(GPIO.BCM)
GPIO.setup(TRANSMIT_PIN, GPIO.OUT)
GPIO.output(TRANSMIT_PIN, 0)
time.sleep(cleaning_delay)
# UP COMMAND
if code is up or code == 100:
#print "going up"
for t in range(NUM_ATTEMPTS):
#print "entering for %s on %s" % (t, NUM_ATTEMPTS)
GPIO.output(TRANSMIT_PIN, 1)
time.sleep(extended_delay)
encode(up_1)
for t in range(NUM_ATTEMPTS):
#print "entering for %s on %s" % (t, NUM_ATTEMPTS)
GPIO.output(TRANSMIT_PIN, 1)
time.sleep(extended_delay)
encode(up_2)
# END UP COMMAND
# DOWN COMMAND
if code is down or code == 0:
#print "going down"
for t in range(NUM_ATTEMPTS):
#print "entering for %s on %s" % (t, NUM_ATTEMPTS)
GPIO.output(TRANSMIT_PIN, 1)
time.sleep(extended_delay)
encode(down_1)
GPIO.output(TRANSMIT_PIN, 0)
time.sleep(mid_delay)
for t in range(NUM_ATTEMPTS):
#print "entering for %s on %s" % (t, NUM_ATTEMPTS)
GPIO.output(TRANSMIT_PIN, 1)
time.sleep(extended_delay)
encode(down_2)
# END DOWN COMMAND
# STOP COMMAND
if code is stop or (code < 100 and code > 0):
#print "stopping"
for t in range(NUM_ATTEMPTS):
#print "entering for %s on %s" % (t, NUM_ATTEMPTS)
GPIO.output(TRANSMIT_PIN, 1)
time.sleep(extended_delay)
encode(stop_1)
# END STOP COMMAND
GPIO.output(TRANSMIT_PIN, 0)
time.sleep(cleaning_delay)
GPIO.cleanup()
if __name__ == '__main__':
for argument in sys.argv[1:]:
exec('transmit_code(' + str(argument) + ')')