ich bin gerade an einem kleinen pi-Projekt dran in dem ich Werte über einen AD-Wandler auslese.
Nun soll je nach Wert ein anderes Bild gezeigt werden. Da sich die Werte aber regelmäßig ändern muss dann immer ein neues Bild gezeigt werden.
Nun habe ich es bereits hinbekommen mit tkinter Bilder anzuzeigen und diese dann wieder zu schließen damit ein neues Bild angezeigt werden kann.
Das Problem was ich noch habe ist, dass aktuell immer kurz kein Bild angezeigt wird und dann erst das Nächste.
Ziel ist es, dass so lange das eine Bild aktiv bleibt bis sich die Werte ändern und dadurch dann ein neues Bild angezeigt wird.
Gibt es dafür eine geeignete Lösung (es geht um den roten Teil)?
Vielen Dank und falls Fragen oder Anmerkungen sind immer her damit.
Code: Alles auswählen
# - *- coding: utf- 8 - *-
#Python Timerklasse importieren
import time
#Python Raspberry Pi GPIO Klasse importieren
import RPi.GPIO as GPIO
import tkinter as tk
from PIL import ImageTk, Image
#ermoeglicht bilder zu importieren
# Festlegung der Nutzung der vorgegebenen Nummerierung der GPIOs
GPIO.setmode(GPIO.BCM)
# Namen von True und False zum besseren Verständnis festlegen (Klarnamen)
HIGH = True
LOW = False
# SCI Funktion
def getAnalogData(adCh, CLKPin, DINPin, DOUTPin, CSPin):
# Pegel definieren
GPIO.output(CSPin, HIGH)
GPIO.output(CSPin, LOW)
GPIO.output(CLKPin, LOW)
cmd = adCh
cmd |= 0b00011000 # Kommando zum Abruf der Analogwerte des Datenkanals adCh
# Bitfolge senden
for i in range(5):
if (cmd & 0x10): # 4. Bit prüfen und mit 0 anfangen
GPIO.output(DINPin, HIGH)
else:
GPIO.output(DINPin, LOW)
# Clocksignal negative Flanke erzeugen
GPIO.output(CLKPin, HIGH)
GPIO.output(CLKPin, LOW)
cmd <<= 1 # Bitfolge eine Position nach links verschieben
# Datenabruf
adchvalue = 0 # Wert auf 0 zurücksetzen
for i in range(11):
GPIO.output(CLKPin, HIGH)
GPIO.output(CLKPin, LOW)
adchvalue <<= 1 # 1 Postition nach links schieben
if(GPIO.input(DOUTPin)):
adchvalue |= 0x01
time.sleep(0.01)
return adchvalue
# Konfiguration Eingangskanal und GPIOs
CH = 0 # Analog/Digital-Channel
CLK = 18 # Clock
DIN = 24 # Digital in
DOUT = 23 # Digital out
CS = 25 # Chip-Select
# Pin-Programmierung
GPIO.setup(CLK, GPIO.OUT)
GPIO.setup(DIN, GPIO.OUT)
GPIO.setup(DOUT, GPIO.IN)
GPIO.setup(CS, GPIO.OUT)
while True:
if(getAnalogData(CH, CLK, DIN, DOUT, CS)< 500):
#This creates the main window of an application
window = tk.Tk()
window.title("Join")
window.geometry("1200x1200")
window.configure(background='grey')
path = "sonne.jpg"
#Creates a Tkinter-compatible photo image, which can be used everywhere Tkinter expects an image object.
img = ImageTk.PhotoImage(Image.open(path))
#The Label widget is a standard Tkinter widget used to display a text or image on the screen.
panel = tk.Label(window, image = img)
#The Pack geometry manager packs widgets in rows or columns.
panel.pack(side = "bottom", fill = "both", expand = "yes")
window.after(1000, window.destroy)
window.mainloop()
else:
window = tk.Tk()
window.title("Join")
window.geometry("1200x1200")
window.configure(background='grey')
path = "mond.jpg"
#Creates a Tkinter-compatible photo image, which can be used everywhere Tkinter expects an image object.
img = ImageTk.PhotoImage(Image.open(path))
#The Label widget is a standard Tkinter widget used to display a text or image on the screen.
panel = tk.Label(window, image = img)
#The Pack geometry manager packs widgets in rows or columns.
panel.pack(side = "bottom", fill = "both", expand = "yes")
window.after(1000, window.destroy)
window.mainloop()[/color][/color]