der Code soll eine gui erstellen mit einem Zahlenfeld und ein paar ausgabenfelder mit dem man dann eine zahl eingibt. Ein ultraschallsensor soll währenddessen eigentlich immer den Absatnd messen und soll dann je nachdem ob der gemessene Wert höher oder niedriger ist was machen.
Vielen Dank im Voraus
Code:
Code: Alles auswählen
# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO
import math
from threading import Thread
import os
from Tkinter import *
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
Trigger = 13
Echo = 16
Pumpe_zu = 22
Pumpe_raus = 18
GPIO.setup(Trigger, GPIO.OUT)
GPIO.setup(Echo, GPIO.IN)
GPIO.setup(Pumpe_zu, GPIO.OUT)
GPIO.setup(Pumpe_raus, GPIO.OUT)
def run():
while True:
i=1
Ergebniskette=0
n=4
#tempmessung()
while i<=n:
GPIO.output(Trigger, True)
time.sleep(0.000001)
GPIO.output(Trigger, False)
while GPIO.input(Echo) == 0:
StartZeit = time.time()
while GPIO.input(Echo) == 1:
StopZeit = time.time()
Zeitdifferenz = StopZeit - StartZeit
#Temperatur einbinden-------------------------------------------------------------------------------------
wurzel = math.sqrt(1 + (17.8 / 273.15))
Entfernung = Zeitdifferenz * 33150 *wurzel/2
print round(Entfernung,2)
Ergebniskette = Ergebniskette + Entfernung
time.sleep(1)
i=i+1
Durchschnitt= round(Ergebniskette / n)
wasseranzeige_string.set(str(Durchschnitt))
fenster.update()
time.sleep(10)
def eingabe_start():
s=0
while s<1:
Wunschwert=int(eingabe.get())
if Wunschwert >= 45:
string.set("Bitte Wert unter 45 eingeben")
eingabe.delete(0,END)
break
else:
string.set("")
s=s+1
def clear():
string.set("blabla")
eingabe.delete(0,END)
fenster = Tk()
fenster.geometry("320x240")
fenster.resizable(width=NO, height=NO)
def zahl0():
eingabe.insert(10,"0")
zahl0 = Button(fenster, text="0",bg="green", command=zahl0)
zahl0.place(x=60, y=185 , width=50, height=50)
def zahl1():
eingabe.insert(10,"1")
zahl1 = Button(fenster, text="1",bg="green", command=zahl1)
zahl1.place(x=10, y=35 , width=50, height=50)
def zahl2():
eingabe.insert(10,"2")
zahl2 = Button(fenster, text="2",bg="green", command=zahl2)
zahl2.place(x=60, y=35 , width=50, height=50)
def zahl3():
eingabe.insert(10,"3")
zahl3 = Button(fenster, text="3",bg="green", command=zahl3)
zahl3.place(x=110, y=35 , width=50, height=50)
def zahl4():
eingabe.insert(10,"4")
zahl4 = Button(fenster, text="4",bg="green", command=zahl4)
zahl4.place(x=10, y=85 , width=50, height=50)
def zahl5():
eingabe.insert(10,"5")
zahl5 = Button(fenster, text="5",bg="green", command=zahl5)
zahl5.place(x=60, y=85 , width=50, height=50)
def zahl6():
eingabe.insert(10,"6")
zahl6 = Button(fenster, text="6",bg="green", command=zahl6)
zahl6.place(x=110, y=85 , width=50, height=50)
def zahl7():
eingabe.insert(10,"7")
zahl7 = Button(fenster, text="7",bg="green", command=zahl7)
zahl7.place(x=10, y=135 , width=50, height=50)
def zahl8():
eingabe.insert(10,"8")
zahl8 = Button(fenster, text="8",bg="green", command=zahl8)
zahl8.place(x=60, y=135 , width=50, height=50)
def zahl9():
eingabe.insert(10,"9")
zahl9 = Button(fenster, text="9",bg="green", command=zahl9)
zahl9.place(x=110, y=135 , width=50, height=50)
clear = Button (fenster,bg="green", text="C", command=clear)
clear.place(x=10, y=185 , width=50, height=50)
string= StringVar()
string_eingabe= StringVar()
enter = Button(fenster, text="B",bg="green",command=eingabe_start)
enter.place(x=110, y=185 , width=50, height=50)
eingabe= Entry(fenster, width=2,font=160)
eingabe.focus()
eingabe.place(x=10, y=10)
string= StringVar()
string.set("Wunschhöhe des Wassers")
ausgabe= Label(fenster,bg="Black",fg="White", textvariable=string)
ausgabe.config(font=20)
ausgabe.place(x=50,y=10)
wasserstand= Label (fenster,bg="Black", fg="White",text="Wasserstand:")
wasserstand.config(font=20)
wasserstand.place(x=160,y=85)
wasseranzeige_string=StringVar()
wasseranzeige=Label(fenster, bg="Black", fg="White", font=20, textvariable=wasseranzeige_string)
wasseranzeige.place(x=271, y=85)
tempanzeige_string= StringVar()
tempanzeige=Label(fenster,bg="Black", fg="White", textvariable=tempanzeige_string, font=20)
tempanzeige.place(x=200, y=110)
temperatur= Label(fenster,bg="Black", fg="White", text="Temperatur:")
temperatur.config(font=20)
temperatur.place(x=160, y=110)
fenster.update()
m=Thread(tareget=run())
m.start()
while True:
Durchschnitt= round(Ergebniskette / n)
wasseranzeige_string.set(str(Durchschnitt))
fenster.update()
if Durchschnitt == Wunschwert:
string.set ("Wasserstand ist Okay")
fenster.update()
GPIO.output(Pumpe_zu, False)
GPIO.output(Pumpe_raus, False)
continue
elif Durchschnitt <= Wunschwert:
string.set( "Wasser wird reingepumpt")
fenster.update()
GPIO.output(Pumpe_zu, True)
continue
elif Durchschnitt >= Wunschwert:
string.set("Wasser wird abgepumpt")
fenster.update()
GPIO.output(Pumpe_raus, True)
continue
fenster.mainloop()