Guest User

Python

a guest
May 14th, 2020
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.86 KB | None | 0 0
  1. #import GPIO library
  2. import RPi.GPIO as GPIO
  3. import time
  4. from tkinter import *
  5. import sys
  6. import PIL
  7. from tkinter.font import Font
  8.  
  9.  
  10. import sys
  11.  
  12. try:
  13. import Tkinter as tk
  14. except ImportError:
  15. import tkinter as tk
  16.  
  17. try:
  18. import ttk
  19. py3 = False
  20. except ImportError:
  21. import tkinter.ttk as ttk
  22. py3 = True
  23.  
  24. import DOVGUI_support
  25. import os.path
  26.  
  27. try:
  28. import Tkinter as tk
  29. except ImportError:
  30. import tkinter as tk
  31.  
  32. try:
  33. import ttk
  34. py3 = False
  35. except ImportError:
  36. import tkinter.ttk as ttk
  37. py3 = True
  38.  
  39. import DOVGUI_support
  40. import os.path
  41.  
  42. sys.setrecursionlimit(15000) # maximální pořet opakování smyčky pro výpočet bodů
  43. ddd = 10
  44. pin0 = 16
  45. skok = 22
  46. run = 0
  47. startTime = 0
  48. speed = 0
  49. jmp = 0
  50. maxspeed = 0
  51. sedum = 0
  52. body = 999
  53. sedlo = 36
  54. maxpoint = 0
  55. sedumsec = 0
  56. gold = 0
  57. silver = 0
  58. bronz = 0
  59. Bodygold = 0
  60. Bodysilver = 0
  61. Bodybronz = 0
  62.  
  63. GPIO.setwarnings (False)
  64. GPIO.setmode(GPIO.BOARD)
  65. GPIO.setup(16,GPIO.IN,GPIO.PUD_DOWN)
  66. GPIO.setup(18,GPIO.IN,GPIO.PUD_DOWN) #pin je připojený k 0 - slouží jen pro vypnutí detekce.
  67. GPIO.setup(22,GPIO.OUT)
  68. GPIO.setup(sedlo,GPIO.IN,GPIO.PUD_DOWN)
  69. GPIO.setup(12,GPIO.IN,GPIO.PUD_DOWN)
  70.  
  71.  
  72. def vp_start_gui():
  73. '''Starting point when module is the main routine.'''
  74. global val, w, root
  75. global prog_location
  76. prog_call = sys.argv[0]
  77. prog_location = os.path.split(prog_call)[0]
  78. root = tk.Tk()
  79. top = Toplevel1 (root)
  80. DOVGUI_support.init(root, top)
  81. main()
  82. root.mainloop()
  83.  
  84. w = None
  85. def create_Toplevel1(rt, *args, **kwargs):
  86. '''Starting point when module is imported by another module.
  87. Correct form of call: 'create_Toplevel1(root, *args, **kwargs)' .'''
  88. global w, w_win, root
  89. global prog_location
  90. prog_call = sys.argv[0]
  91. prog_location = os.path.split(prog_call)[0]
  92. #rt = root
  93. root = rt
  94. w = tk.Toplevel (root)
  95. top = Toplevel1 (w)
  96. DOVGUI_support.init(w, top, *args, **kwargs)
  97. return (w, top)
  98.  
  99. def destroy_Toplevel1():
  100. global w
  101. w.destroy()
  102. w = None
  103.  
  104. class Toplevel1:
  105. def __init__(self, top=None):
  106. '''This class configures and populates the toplevel window.
  107. top is the toplevel containing window.'''
  108. _bgcolor = '#d9d9d9' # X11 color: 'gray85'
  109. _fgcolor = '#000000' # X11 color: 'black'
  110. _compcolor = '#d9d9d9' # X11 color: 'gray85'
  111. _ana1color = '#d9d9d9' # X11 color: 'gray85'
  112. _ana2color = '#ececec' # Closest X11 color: 'gray92'
  113.  
  114. top.geometry("1920x1065+400+250")
  115. top.minsize(120, 1)
  116. top.maxsize(3460, 1181)
  117. top.resizable(0, 0)
  118. top.title("DOV2020")
  119. top.configure(background="#d9d9d9")
  120. top.configure(highlightbackground="#d9d9d9")
  121. top.configure(highlightcolor="black")
  122.  
  123. self.Pozadi = tk.Canvas(top)
  124. self.Pozadi.place(relx=0.0, rely=0.0, relheight=2.4, relwidth=2.253)
  125. self.Pozadi.configure(background="#2df4ef")
  126. self.Pozadi.configure(borderwidth="2")
  127. self.Pozadi.configure(highlightbackground="#d9d9d9")
  128. self.Pozadi.configure(highlightcolor="black")
  129. self.Pozadi.configure(insertbackground="black")
  130. self.Pozadi.configure(relief="ridge")
  131. self.Pozadi.configure(selectbackground="#c4c4c4")
  132. self.Pozadi.configure(selectforeground="#bcbcbc")
  133.  
  134. self.Label1 = tk.Label(self.Pozadi)
  135. self.Label1.place(relx=-0.129, rely=-0.141, height=1789, width=3028)
  136. self.Label1.configure(activebackground="#f9f9f9")
  137. self.Label1.configure(activeforeground="black")
  138. self.Label1.configure(background="#d9d9d9")
  139. self.Label1.configure(disabledforeground="#a3a3a3")
  140. self.Label1.configure(foreground="#000000")
  141. self.Label1.configure(highlightbackground="#d9d9d9")
  142. self.Label1.configure(highlightcolor="black")
  143. photo_location = os.path.join(prog_location,"/home/pi/Desktop/DOV/back.png")
  144. global _img0
  145. _img0 = tk.PhotoImage(file=photo_location)
  146. self.Label1.configure(image=_img0)
  147. self.Label1.configure(text='''Label''')
  148.  
  149. self.LBLSpeed = tk.Label(self.Pozadi)
  150. self.LBLSpeed.place(relx=0.194, rely=0.145, height=131, width=244)
  151. self.LBLSpeed.configure(activebackground="#f9f9f9")
  152. self.LBLSpeed.configure(activeforeground="black")
  153. self.LBLSpeed.configure(background="#dcddf2")
  154. self.LBLSpeed.configure(disabledforeground="#a3a3a3")
  155. self.LBLSpeed.configure(font="-family {Digital-7} -size 24")
  156. self.LBLSpeed.configure(foreground="#000000")
  157. self.LBLSpeed.configure(highlightbackground="#d9d9d9")
  158. self.LBLSpeed.configure(highlightcolor="black")
  159. self.LBLSpeed.configure(padx="0")
  160. self.LBLSpeed.configure(text=maxspeed)
  161.  
  162. self.LBLGoldspeed_1 = tk.Label(self.Pozadi)
  163. self.LBLGoldspeed_1.place(relx=0.097, rely=0.203, height=41, width=144)
  164. self.LBLGoldspeed_1.configure(activebackground="#f9f9f9")
  165. self.LBLGoldspeed_1.configure(activeforeground="black")
  166. self.LBLGoldspeed_1.configure(background="#000000")
  167. self.LBLGoldspeed_1.configure(disabledforeground="#a3a3a3")
  168. self.LBLGoldspeed_1.configure(font="-family {Digital-7} -size 9")
  169. self.LBLGoldspeed_1.configure(foreground="#ffffff")
  170. self.LBLGoldspeed_1.configure(highlightbackground="#d9d9d9")
  171. self.LBLGoldspeed_1.configure(highlightcolor="black")
  172. self.LBLGoldspeed_1.configure(text='''Zlato rychlost''')
  173.  
  174. self.LBLsilerspeed = tk.Label(self.Pozadi)
  175. self.LBLsilerspeed.place(relx=0.079, rely=0.227, height=31, width=106)
  176. self.LBLsilerspeed.configure(activebackground="#f9f9f9")
  177. self.LBLsilerspeed.configure(activeforeground="black")
  178. self.LBLsilerspeed.configure(background="#000000")
  179. self.LBLsilerspeed.configure(disabledforeground="#a3a3a3")
  180. self.LBLsilerspeed.configure(font="-family {Digital-7} -size 15")
  181. self.LBLsilerspeed.configure(foreground="#ffffff")
  182. self.LBLsilerspeed.configure(highlightbackground="#d9d9d9")
  183. self.LBLsilerspeed.configure(highlightcolor="black")
  184. self.LBLsilerspeed.configure(text='''Stribro rychlost''')
  185.  
  186. self.LBLbronzspeed = tk.Label(self.Pozadi)
  187. self.LBLbronzspeed.place(relx=0.095, rely=0.243, height=31, width=101)
  188. self.LBLbronzspeed.configure(activebackground="#f9f9f9")
  189. self.LBLbronzspeed.configure(activeforeground="#000000")
  190. self.LBLbronzspeed.configure(background="#000000")
  191. self.LBLbronzspeed.configure(disabledforeground="#a3a3a3")
  192. self.LBLbronzspeed.configure(font="-family {Digital-7} -size 15")
  193. self.LBLbronzspeed.configure(foreground="#ffffff")
  194. self.LBLbronzspeed.configure(highlightbackground="#d9d9d9")
  195. self.LBLbronzspeed.configure(highlightcolor="black")
  196. self.LBLbronzspeed.configure(text='''Bronz rychlost''')
  197.  
  198. self.LBLGoldpoint = tk.Label(self.Pozadi)
  199. self.LBLGoldpoint.place(relx=0.319, rely=0.196, height=21, width=63)
  200. self.LBLGoldpoint.configure(activebackground="#f9f9f9")
  201. self.LBLGoldpoint.configure(activeforeground="#000000")
  202. self.LBLGoldpoint.configure(background="#000000")
  203. self.LBLGoldpoint.configure(disabledforeground="#a3a3a3")
  204. self.LBLGoldpoint.configure(font="-family {Digital-7} -size 15")
  205. self.LBLGoldpoint.configure(foreground="#ffffff")
  206. self.LBLGoldpoint.configure(highlightbackground="#d9d9d9")
  207. self.LBLGoldpoint.configure(highlightcolor="black")
  208. self.LBLGoldpoint.configure(text='''Zlato body''')
  209.  
  210. self.LBLsilverpoint_2 = tk.Label(self.Pozadi)
  211. self.LBLsilverpoint_2.place(relx=0.333, rely=0.215, height=21, width=71)
  212. self.LBLsilverpoint_2.configure(activebackground="#f9f9f9")
  213. self.LBLsilverpoint_2.configure(activeforeground="black")
  214. self.LBLsilverpoint_2.configure(background="#000000")
  215. self.LBLsilverpoint_2.configure(disabledforeground="#a3a3a3")
  216. self.LBLsilverpoint_2.configure(font="-family {Digital-7} -size 15")
  217. self.LBLsilverpoint_2.configure(foreground="#ffffff")
  218. self.LBLsilverpoint_2.configure(highlightbackground="#d9d9d9")
  219. self.LBLsilverpoint_2.configure(highlightcolor="black")
  220. self.LBLsilverpoint_2.configure(text='''Stribro body''')
  221.  
  222. self.LBLbronzbody = tk.Label(self.Pozadi)
  223. self.LBLbronzbody.place(relx=0.317, rely=0.235, height=21, width=66)
  224. self.LBLbronzbody.configure(activebackground="#f9f9f9")
  225. self.LBLbronzbody.configure(activeforeground="black")
  226. self.LBLbronzbody.configure(background="#000000")
  227. self.LBLbronzbody.configure(disabledforeground="#a3a3a3")
  228. self.LBLbronzbody.configure(font="-family {Digital-7} -size 15")
  229. self.LBLbronzbody.configure(foreground="#ffffff")
  230. self.LBLbronzbody.configure(highlightbackground="#d9d9d9")
  231. self.LBLbronzbody.configure(highlightcolor="black")
  232. self.LBLbronzbody.configure(text='''Bronz body''')
  233.  
  234. def rychlost():
  235. print("rychlost")
  236. global pin0
  237. global run
  238. global speed
  239. global startTime
  240. global jmp
  241. global maxspeed
  242. global sedum
  243. global sedumsec
  244. global body
  245. obvod = 120 # nutno zadat podle skutečnsoti
  246.  
  247. pin0 = 18
  248.  
  249.  
  250. while run == 0:
  251. tik = GPIO.wait_for_edge(16, GPIO.RISING, timeout=4000)
  252. if tik is None:
  253. print('Už se netočí, vracím se na bednu a počítám')
  254. pin0 = 16
  255. speed = 0
  256. bedna()
  257.  
  258. else:
  259. if ((time.time() - sedum) < 7):
  260. print("merim")
  261. if jmp == 0:
  262. startTime = time.time()
  263. jmp = 1
  264. sedumsec = 0
  265. rychlost()
  266. else:
  267. jmp = 0
  268. speed = obvod / (time.time() - startTime)
  269. print("Rychlost je",round(speed,2),"cm/s")
  270.  
  271. if speed >= maxspeed:
  272. maxspeed = speed
  273. pin0 = 16
  274. else:
  275. pass
  276. else:
  277. GPIO.output(22, True)
  278. time.sleep(0.1)
  279. GPIO.output(22, False)
  280. print("naskoč")
  281. body = round(maxspeed * 10,0)
  282. sedumsec = 1
  283. score()
  284.  
  285. else: pass
  286. return
  287.  
  288. def score():
  289. global body
  290. global sedlo
  291. global maxpoint
  292. global maxspeed
  293. sedlo = 36
  294. pin0 = 18
  295.  
  296. while run == 0:
  297.  
  298. hups = GPIO.wait_for_edge(sedlo, GPIO.RISING,timeout=25)
  299.  
  300.  
  301. while hups is None:
  302. print("Jel jsi maximální rychlostí",round(maxspeed,2),"m/s")
  303. print ("Naskakuj, běží body")
  304. while body > 0:
  305. body = body - 1
  306. print("body",body)
  307. score()
  308. else:
  309. print ("Nenaskočil jsi včas!!!")
  310. main()
  311. print (body)
  312. score()
  313. else:
  314. print("Naskočil jsi, tvoje skóre je ", body, "bodů")
  315. print(body)
  316. pin0 = 16
  317. maxpoint = body
  318. bedna2()
  319. else:
  320. pass
  321. #def point():
  322. def bedna2():
  323.  
  324. global maxpoint
  325. print("Počítám body")
  326. print("Tvůj výkon je", round(maxpoint,2),"bodů")
  327. global Bodygold
  328. global Bodysilver
  329. global Bodybronz
  330. global body
  331.  
  332.  
  333. if maxpoint >= Bodygold:
  334. Bodybronz = Bodysilver
  335. Bodysilver = Bodygold
  336. Bodygold = maxpoint
  337. print("Bodyzlato", round(Bodygold,2))
  338. print("Bodystribro", round(Bodysilver,2))
  339. print("Bodybronz", round(Bodybronz,2))
  340. maxpoint = 0
  341. bedna()
  342. elif maxpoint>= Bodysilver:
  343. Bodybronz = Bodysilver
  344. Bodysilver = maxpoint
  345. Bodygold = Bodygold
  346. print("Bodyzlato", round(Bodygold,2))
  347. print("Bodystribro", round(Bodysilver,2))
  348. print("Bodybronz", round(Bodybronz,2))
  349. maxpoint = 0
  350. bedna()
  351. elif maxpoint> Bodybronz:
  352. Bodybronz = maxpoint
  353. print("Bodyzlato", round(Bodygold,2))
  354. print("Bodystribro", round(Bodysilver,2))
  355. print("Bodybronz", round(Bodybronz,2))
  356. maxpoint = 0
  357. bedna()
  358.  
  359. def bedna():
  360. global maxspeed
  361. print("počítám vítěze")
  362. print("maximum je", round(maxspeed,2),"cm/s")
  363. global gold
  364. global silver
  365. global bronz
  366. global sedumsec
  367.  
  368. if sedumsec == 0:
  369. print("netlačil jsi 7 sekund")
  370. main()
  371. else:
  372. pass
  373.  
  374. if maxspeed >= gold:
  375. bronz = silver
  376. silver = gold
  377. gold = maxspeed
  378. print("zlato", round(gold,2))
  379. print("stribro", round(silver,2))
  380. print("bronz", round(bronz,2))
  381. maxspeed = 0
  382. main()
  383. elif maxspeed>= silver:
  384. bronz = silver
  385. silver = maxspeed
  386. gold = gold
  387. print("zlato", round(gold,2))
  388. print("stribro", round(silver,2))
  389. print("bronz", round(bronz,2))
  390. maxspeed = 0
  391. main()
  392. elif maxspeed> bronz:
  393. bronz = maxspeed
  394. print("zlato", round(gold,2))
  395. print("stribro", round(silver,2))
  396. print("bronz", round(bronz,2))
  397. maxspeed = 0
  398. main()
  399.  
  400. def main():
  401. pin0 = 16
  402. global sedum
  403. while run == 0:
  404. channel = GPIO.wait_for_edge(pin0, GPIO.RISING, timeout=2000)
  405. if channel is None:
  406. print('Nikdo nejede, tak nic nedělám.')
  407. top.after(200, vp_start_gui)
  408.  
  409. else:
  410. print("Kolo se točí, přijímám signál a měřím")
  411. sedum = time.time()
  412. rychlost()
  413.  
  414.  
  415.  
  416.  
  417. while __name__ == '__main__':
  418. vp_start_gui()
Add Comment
Please, Sign In to add comment