-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathzadatakB2Ceo.py
243 lines (209 loc) · 7.57 KB
/
zadatakB2Ceo.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
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
# Ovo je ceo drugi zadatak bez potenciometra
#Taster1: 14, Taster2: 18, dioda1: 23,dioda2:25, dioda3: 7, dioda4: 21
from gpiozero import LED,Button,LEDBoard
from signal import pause
from time import sleep
#aj da formiramo ledove
leds = LEDBoard(23,25,7,21)
btnSmer = Button(14)
btnUvecaj = Button(18)
ukljucenBrojDioda = 1
pauzaPromeneDioda = 0.5
selektorPrveDiode = 0
selektorZadnjeDiode = selektorPrveDiode + ukljucenBrojDioda - 1
maksimalniBrojDioda = 4
#Ovo je varijabla definisana za jednostavan nacin
#moze biti izmedju 1 i 4 i na osnovu njega bira nacin rada
selektorModa = 1
#Takodje ce biti definisan selektor smera
#moze da se bira izmedju 0 i 1(0 je smer sa leva na desno, dok 1 je obrnuti smer)
selektorSmera = 0
def ukljuciDiodeTest():
"""Ukljucuje diode i posle dve sekunde ih gasi"""
print("Ukljucio si diode, pritisnuo si SMER")
leds.on()
#sleep(2)
# leds.off()
def iskljuciDiodeTest():
"""Iksljucije diode"""
print("Iskljucio si diode, pritisnuo si UVECAJ")
leds.off()
print("Done...")
quit()
def uvecaj():
"""Povecava broj dioda za jedan"""
#Prvo treba da resetuje da ne bi upadali u probleme
global selektorPrveDiode
global ukljucenBrojDioda
global maksimalniBrojDioda
global selektorZadnjeDiode
print("Pritisnuo si dugme uvecaj")
leds.off()
selektorPrveDiode = 0
if(ukljucenBrojDioda < (maksimalniBrojDioda - 1)):
ukljucenBrojDioda = ukljucenBrojDioda + 1
else:
ukljucenBrojDioda = 1
selektorZadnjeDiode = selektorPrveDiode + ukljucenBrojDioda - 1
selektorPrveDiode = 0
def seljacki():
"""Prosto inkrementator koji smo razvijali
pod slucajem da ne radi osnovni, deo
"""
global ukljucenBrojDioda
if (ukljucenBrojDioda < maksimalniBrojDioda):
ukljucenBrojDioda = ukljucenBrojDioda + 1
else:
ukljucenBrojDioda = 1
# Ova dva definise vezano za test
# btnSmer.when_pressed = ukljuciDiodeTest
# btnUvecaj.when_pressed = iskljuciDiodeTest
#Ovo je odgovor na dogadjaj kada se dugme pritisne u komplikovanom slucaju
# btnUvecaj.when_pressed = uvecaj
#btnSmer.when_pressed = iskljuciDiodeTest
#Ovde krece program
def jednostavanUvecaj():
"""Jednostavna callback funkcija koja samo menja selektor moda, menja
selektor ali tako da ostane u granicama od 1 do 4"""
global selektorModa
if(selektorModa < 4):
selektorModa = selektorModa + 1
else:
selektorModa = 1
def jednostavnoSmer():
"""Jednostavna callback f-ja koja menja selektor smera, menja selektor smera
ali tako da moze da bude jedan ili nula"""
global selektorSmera
if(selektorSmera == 0):
selektorSmera = 1
else:
selektorSmera = 0
#jednostavna varijanta
btnUvecaj.when_pressed = jednostavanUvecaj
btnSmer.when_pressed = jednostavnoSmer
print("Program je aktivan")
while True:
#Dakle koristimo leds.on(1,2) na primer
#prvi je selektor koja je prva, posle ide vrednost do koje je ukljucena vrednost
# bice zamenjena varijablom
#umesto klasicnog poziva leds.on(1,2) moramo na drugi nacin
# leds.on(selektorPrveDiode,selektorZadnjeDiode)
#moramo preko for-a
#Aj seljacki
# ipak necemo seljacki lepo radi i ovako....
# if (ukljucenBrojDioda == 1):
# for led in leds[selektorPrveDiode:(selektorZadnjeDiode + ukljucenBrojDioda)]:
# led.on()
# sleep(pauzaPromeneDioda)
# if(selektorPrveDiode < maksimalniBrojDioda):
# selektorPrveDiode = selektorPrveDiode + 1
# selektorZadnjeDiode = selektorZadnjeDiode
#Komplikovan nacin(koji radi)
# for led in leds[selektorPrveDiode:(selektorZadnjeDiode + 1)]:
# led.on()
# sleep(pauzaPromeneDioda)
# leds.off()
# if(selektorPrveDiode < (maksimalniBrojDioda - ukljucenBrojDioda)):
# selektorPrveDiode = selektorPrveDiode + 1
# selektorZadnjeDiode = selektorZadnjeDiode + 1
# leds.off()
# else:
# selektorPrveDiode = 0
# #na ovakav nacin definisemo indeks zadnje diode koja treba da bude ukljucena
# selektorZadnjeDiode = selektorPrveDiode + ukljucenBrojDioda -1
# leds.off()
#Kraj Komplikovanog nacina
#Jednostavan nacin(Koristi selektor moda) i selektor smera
if ((selektorModa == 1) and (selektorSmera == 0)):
#dakle biramo koje su diode ukljucene, pa onda nakon spavanja menjamo stanja
#naravno prvo ih pogasimo da ne ostane neka upaljena
leds.off()
leds.value = (1,0,0,0)
sleep(pauzaPromeneDioda)
leds.value = (0,1,0,0)
sleep(pauzaPromeneDioda)
leds.value = (0,0,1,0)
sleep(pauzaPromeneDioda)
leds.value = (0,0,0, 1)
sleep(pauzaPromeneDioda)
#Sa ovim je jedan ciklus promenjen, gasimo diode da ne ostane ukljucena
leds.off()
if((selektorModa == 2) and (selektorSmera == 0)):
#Ovo je drugi mod, pale se dve diode
#ali da proverimo da su sve ugasene
leds.off()
leds.value = (1,1,0,0)
sleep(pauzaPromeneDioda)
leds.value = (0,1,1,0)
sleep(pauzaPromeneDioda)
leds.value = (0,0,1,1)
sleep(pauzaPromeneDioda)
#i da ne zaboravimo da pogasimo diode
leds.off()
if((selektorModa == 3) and (selektorSmera == 0)):
#ovo je treci mod kada su sve upaljene
#da se uverimo da su sve ugasene
leds.off()
leds.value = (1,1,1,0)
sleep(pauzaPromeneDioda)
leds.value = (0,1,1,1)
sleep(pauzaPromeneDioda)
leds.value = (1,0,1,1)
sleep(pauzaPromeneDioda)
leds.value = (1,1,0,1)
sleep(pauzaPromeneDioda)
leds.value = (1,1,1,0)
sleep(pauzaPromeneDioda)
#i da ne zaboravimo da pogasimo diode
leds.off()
if((selektorModa == 4) and (selektorSmera == 0)):
#Ovo je cetvrti mod kada su diode sve upaljene
leds.on()
#sada uvodimo i selektor smera
if((selektorModa == 1) and (selektorSmera == 1)):
#Ovo je prvi mod sa jednom diodom i obrnutim smerom
#prvo da se uverimo da li su sve diode iskljucene
leds.off()
leds.value = (0,0,0,1)
sleep(pauzaPromeneDioda)
leds.value = (0,0,1,0)
sleep(pauzaPromeneDioda)
leds.value = (0,1,0,0)
sleep(pauzaPromeneDioda)
leds.value = (1,0,0,0)
sleep(pauzaPromeneDioda)
#sa ovim je ciklus promenjen pa mozemo da pogasimo diode
# i da pocnemo iz pocetka
leds.off()
if((selektorModa == 2) and (selektorSmera == 1)):
#Ovo je drugi mod sa dve diode i obrnutim smerom
#da se uverimo da su sve diode iskljucene
leds.off()
leds.value = (0,0,1,1)
sleep(pauzaPromeneDioda)
leds.value = (0,1,1,0)
sleep(pauzaPromeneDioda)
leds.value = (1,1,0,0)
sleep(pauzaPromeneDioda)
#ciklus je zavrsen i da se uverimo da su sve diode iskljucene
leds.off()
if((selektorModa == 3) and (selektorSmera == 1)):
#ovo je treci mod sa ukljucene tri diode i obrnutim smerom
#da se uverimo da su sve diode iskljucene
leds.off()
leds.value = (0,1,1,1)
sleep(pauzaPromeneDioda)
leds.value = (1,1,1,0)
sleep(pauzaPromeneDioda)
leds.value = (1,1,0,1)
sleep(pauzaPromeneDioda)
leds.value = (1,0,1,1)
sleep(pauzaPromeneDioda)
leds.value = (0,1,1,1)
#ciklus je zavrsen i da se uverimo da su sve diode iskljucene
leds.off()
if((selektorModa == 4) and (selektorSmera == 1)):
#ovo je cetvrti mod kada su sve diode upaljene
leds.on()
leds.off()
pause()