Ein Azubi im 3 Lehrjahr hatte mir damals geholfen, ein Script zu schreiben wo mit ich Zeiten einstellen konnte und diese Visualisiert wurden.
Ich bekomme es leider nicht mehr hin, dass wenn die Zeit läuft es nicht mehr geändert werden darf.
Der Schalter zum ändern von schnell auf langsam ist der GPIO18
Es funktioniert soweit alles super nur wenn die Zeit läuft darf er nicht von schnell auf langsam um switchen
Hat jemand eine idee wie ich das noch darein bekomme ?
Code: Alles auswählen
from tkinter import *
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings (False)
GPIO.setup(15, GPIO.IN)
GPIO.setup(14, GPIO.IN)
GPIO.setup(17, GPIO.IN)
GPIO.setup(18, GPIO.IN)
global flip
global modus
modus=0
flip=2
def exit():
root.destroy()
GPIO.cleanup()
sys.exit()
def save():
runit()
labelshow()
class StopWatch(Frame):
global modus
""" Implements a stop watch frame widget. """
def __init__(self, parent=None, **kw):
Frame.__init__(self, parent, kw)
self._start = 0.0
self._elapsedtime = 0.0
self._running = 0
self.timestr = StringVar()
self.makeWidgets()
def makeWidgets(self):
""" Make the time label. """
text="test"
l = Label(self,textvariable=self.timestr, bg="white")
self._setTime(self._elapsedtime)
l.place(relx=0.5, rely=0.5,anchor=CENTER)
l.config(font=("Courier 100 bold"))
l.pack(fill=Y, expand=NO, pady=1, padx=1)
def _update(self):
""" Update the label with elapsed time. """
self._elapsedtime = time.time() - self._start
self._setTime(self._elapsedtime)
self._timer = self.after(50, self._update)
def _setTime(self, elap):
""" Set the time string to Minutes:Seconds:Hundreths """
hours = int(elap/60/60)
if hours >= 1:
minutes = int(elap/60 - hours*60.0)
seconds = int(elap - 3600*hours - (minutes * 60))
else:
minutes = int(elap/60)
seconds = int(elap - minutes*60.0)
self.timestr.set('%02d:%02d:%02d' % (hours, minutes, seconds))
def Start(self):
global modus
""" Start the stopwatch, ignore if running. """
if not self._running:
modus=0
self._elapsedtime = 0.0
self._setTime(self._elapsedtime)
self._start = time.time() - self._elapsedtime
self._update()
self._running = 1
def Stop(self):
""" Stop the stopwatch, ignore if stopped. """
if self._running:
self.after_cancel(self._timer)
self._elapsedtime = time.time() - self._start
self._setTime(self._elapsedtime)
self._running = 0
# def bediener(self):
# self._update()
def main():
global modus
global setter
setter=0
rot= 4.0
gelb= 1.0
root = Tk()
root.configure(background="green2")
root.geometry("800x480")
sw = StopWatch(root)
sw.place(relx=0.5,rely=0.5,anchor=CENTER)
# root.wm_overrideredirect(True) #Vollbild
# root.wm_overrideredirect(True) #Vollbild
root.update()
while(True):
root.update()
if sw._elapsedtime >= rot:
root.configure(background="red")
elif sw._elapsedtime >= gelb:
root.configure(background="yellow")
else:
root.configure(background="green2")
if GPIO.input(18) == 1:
setter=2
if sw._running == 1:
modus = 1
rot = 60.0*12 #Farbveränderung für 2 Schnell
gelb = 60.0*95
if GPIO.input(18) == 0 and modus:
modus = 0
rot = 60.0*24 #Farbveränderung für 1 Langsam
gelb = 60.0*19
if not GPIO.input(15) == 0:
sw.Stop()
time.sleep(0.5)
root.update()
if not GPIO.input(14) == 0:
sw.Start()
time.sleep(0.5)
root.update()
root.mainloop()
if __name__ == '__main__':
main()