-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlightcontrol.py
71 lines (61 loc) · 1.8 KB
/
lightcontrol.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
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
lightstate = [[1,0,0],[1,0,0],[1,0,0],[1,0,0]]
pin = [[3,5,7],[8,10,11],[12,13,15],[16,18,19]]
for i in range(0,len(pin)):
for j in range(0,3):
GPIO.setup(pin[i][j], GPIO.OUT, initial=GPIO.LOW)
def control(veh, totwei, maxlim):
minlim = 0
#avgtime = 6
#lanes = 2
terrainFactor = [1, 1, 1.5, 1]
ways = len(veh) #no of lanes
times = []
time = 0
for i in range(0,ways):
pretime = ((veh[i]*terrainFactor[i])/totwei)*maxlim
if(pretime%5 != 0):
time = pretime + (5-(pretime%5))
else:
time=pretime
if time>maxlim:
allotime = maxlim
elif time<minlim:
allotime=minlim
else:
allotime=time
times.append(allotime)
print(times)
return times
def light(state):
output = []
for i in range(0,len(state)):
if state[i] == 2:
output.append('g')
lightstate[i] = [0,0,1]
elif state[i] == 1:
output.append('y')
lightstate[i] = [0,1,0]
else:
output.append('r')
lightstate[i] = [1,0,0]
print(output)
setlight(lightstate,pin)
def setlight(listate,pino):
for i in range(0,len(pino)):
for j in range(0,3):
if listate[i][j] == 1:
GPIO.output(pino[i][j], GPIO.HIGH)
else:
GPIO.output(pino[i][j], GPIO.LOW)
def blink():
lightstate = [[1,0,0],[0,1,0],[1,0,0],[0,1,0]]
setlight(lightstate,pin)
time.sleep(1)
lightstate = [[0,0,0],[0,0,0],[0,0,0],[0,0,0]]
setlight(lightstate,pin)
time.sleep(1)