Advertisement
Guest User

Untitled

a guest
Jan 14th, 2016
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.89 KB | None | 0 0
  1. import RPi.GPIO as GPIO
  2. import time
  3. import os
  4. import sys
  5. import threading
  6.  
  7. GPIO_start_pin = "1"                                                                    #GPIO pin an dem die erste(1.) lichtscranke sitzt
  8. GPIO_end_pin = "1"                                                                      #GPIO pin an dem die letzte(2.) lichtschranke sitzt
  9. GPIO_button_pin = "1"                                                                   #GPIO pin des button
  10. t_out = "5.0"                                                                           #nach wie viel sekunden soll mesung abgebrochen werden falls nicht durch 2. lichtschranke
  11. waycm = "35.0"                                                                          #abstand lichtscranken in cm(bei nur einer der durchmesser vom ball)
  12. waykm = waycm / 100 / 1000                                                              #umrechnung in km
  13.  
  14.  
  15.  
  16.  
  17.  
  18. class button_detect(threading.Thread)
  19.     while true:                                                                         #endlosschelife
  20.         sleep(0.5)                                                                      #warte 0.5s ab(kostet dadurch weniger ressourcen die bei den lichtschranken mehr benötigt werden)
  21.         while GPIO.input(GPIO_button_pin) == False:                                     #wenn button gedrückt
  22.             me = sys.executable                                                         #schreib in variable "me" den pfad zu diesem script
  23.             print("restart in 5s")                                                      #meldung zum neustarten des scripts
  24.             time.sleep(5)                                                               #warte 5 sekunden
  25.             os.execl(me, me, * sys.argv)                                                #starte das script aus der variable "me"
  26.  
  27.  
  28. def calcSpeed():
  29.     timeH = timeS / 3600                                                                #/3600 = /60 / 60 (von sekunden in minuten in stunden, 60 * 60 = 3600)
  30.     kmH = waykm / timeH                                                                 #geschwindigkeit = weg / zeit (v = s/t)
  31.     s_time = 0
  32.     e_time = 0
  33.     setOutput()
  34.  
  35.  
  36. def setOutput():                                                                        #wird benötigt um diese funktion später wieder aufzurufen
  37.     i = os.system("clear")                                                              #alte geschwindigkeit entfernen
  38.     print (kmH, "km/h")                                                                 #neue geschwindigkeit anzeigen
  39.  
  40.  
  41. class getTimeS(threading.Thread):
  42.     s_time = 0                                                                          #startzeit zurücksetzen
  43.     while True:                                                                         #endlosschelife
  44.         while GPIO.input(GPIO_start_pin) == GPIO.LOW:                                   #solange 1. lichtscranke nicht unterbrochen
  45.             s_time = time.time()                                                        #setze startzeit auf aktuelle uhrzeit
  46.         time.sleep(t_out)                                                               #warte timeout ab
  47.  
  48.  
  49. class getTimeE(threading.Thread)
  50.     while True:
  51.         e_time = 0                                                                      #endzeit reset
  52.         while GPIO.input(GPIO_end_pin) != GPIO.LOW and time.time() - s_time < t_out:    #solange 2. lichtscranke nicht unterbrochen UND verstrichene zeit nciht > las tout
  53.             e_time = time.time()                                                        #setzt endzeit auf aktuelle uhrzeit
  54.             timeS = e_time - s_time                                                     #verstrichene_zeit = endzeit - startzeit
  55.         time.sleep(t_out / 2)                                                           #warte timeout/2
  56.         calcSpeed()                                                                     #geschwindigkeit berechnen und ausgeben
  57.  
  58.  
  59.  
  60.  
  61.  
  62. gts = getTimeS()
  63. gte = getTimeE()
  64. gts.start(), gte.start()                                                                #starte die prüfung ob eine lichtschranke unterbrochen wurde
  65.  
  66. while True:                                                                             #unendliche schleife
  67.     GPIO.setmode(GPIO.BCM)                                                              #modus für GPIO setzen
  68.     GPIO.setwarnings(False)                                                             #fehlermeldung deaktivieren
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement