Ach quatsch völlig falsche Fehlerbeschreibung sorry.....
kann ich meinen Beitrag hier drüber irgendwie löschen oder bearbeiten?
Hab keinen Button dafür gefunden....
Hier mal der grobe Code:
Code: Alles auswählen
from tkinter import *
from tkinter import ttk
from itertools import cycle
import smbus
import time
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(19, GPIO.OUT)
GPIO.output(19, GPIO.LOW)
GPIO.setup(26, GPIO.OUT)
GPIO.output(26, GPIO.LOW)
"""----------------Graphical User Interface----------------"""
# Implementierung des User Interface
window = Tk()
window.title("User Interface")
window.geometry('800x480')
# Hinzufügen der Tabs
tab_control = ttk.Notebook(window)
# Anzahl der Tabs
tab1 = ttk.Frame(tab_control)
# Namensgebung der Tabs
tab_control.add(tab1, text='Encoder')
# Anzeige der Tabs auf "GUI"
tab_control.pack(expand=1, fill='both')
"""------------------------Funktionen für Encoder Tab-----------------------------"""
val_enc_spin = 0
delay_encoder = 0.3
def EncoderTestInkr():
val_enc_spin = EncoderSpinbox.get()
print("Value in Spinbox: ", val_enc_spin)
"""Encoder-Variablen"""
ist_wert = 0
soll_wert = int(val_enc_spin)
out_values = [1, 1, 0, 0]
if ist_wert < soll_wert:
GPIO.output(13, 1)
time.sleep(Delay_Encoder)
GPIO.output(13, 0)
previous_out = out_values[-1]
for i, out in zip(range(ist_wert, soll_wert), cycle(out_values)):
print("out", out, "\n",
"previous_out", previous_out, "\n",
"ist_Wert", ist_wert, "\n")
time.sleep(Delay_Encoder)
GPIO.output(26, out)
time.sleep(Delay_Encoder)
GPIO.output(19, previous_out)
ist_wert += 1
previous_out = out
if ist_wert == soll_wert:
GPIO.output(13, 1)
time.sleep(Delay_Encoder)
GPIO.output(13, 0)
"""GUI Encoder-Tab"""
# Button Inkrementierung
EncoderButtonInkr = Button(tab1, text = "Inkrementierung", command = EncoderTestInkr)
EncoderButtonInkr.place(x = 128, y = 40)
LabelButtons = Label(tab1, text = "Test der Inkrementierung des Encoders")
LabelButtons.place(x = 10, y = 10)
# Spinbox Encoder
EncoderSpinbox = Spinbox(tab1, from_ = 0, to = 99, width = 5)
EncoderSpinbox.place(x = 530, y = 40)
LabelSpinbox = Label(tab1, text = "Eingabe: Soll-Wert")
LabelSpinbox.place(x = 500, y = 10)
Also wenn ich jetzt den Wert 3 in die Spinbox eingebe und auf Inkrementierung drücke, läuft die Schleife solange bis der Sollwert erreicht ist.
Wenn ich dann den Wert ändere und wieder auf Inkrementierung drücke, starte ich nicht mit dem vorherigen Wert von
out und
previous_out, sondern starte wieder von out = 1 und previous_out = 0
Hatte eben einen dicken Denkfehler drin.
Immer wenn ich auf Inkrementierung drücke will ich ja nicht wieder bei out = 1 und previous_out = 0 starten sondern ich will bei den vorherigen out und previous_out ansetzen und von da weiter "zählen".