ich habe mit Tkinter ein Programm aus Einzelteilen zusammengestellt, dass bereits 2 Linearaktuatoren anspricht. Das funktioniert problemlos.
Jetzt zur eigentlichen Frage: Der Motor Treiber gibt mir ein Feedback ob die Motoren Strom verbrauchen oder nicht, diese Information habe ich auf 2 Pins gelegt und als Eingang definiert. In dem Programm ist ein Label angelegt dass diesen Status mit dem Text "Motoren laufen" oder "Fehler" updaten soll, je nach Eingang auf den Pins. --> beide Pins HIGH --> "Motoren laufen" ; Nur einer oder kein PIN HIGH --> "Fehler".
Ich habe versucht die textvariable des Labels mit einer Funktion zu belegen, jedoch bin ich mir als Anfänger nicht sicher ob das geht, des weiteren müsste die Funktion eine IF-Schleife abfragen, geht das?
Ich habe einige sinnvolle Themen ähnlicher Natur im Internet gefunden, aber da wird meistens die Funktion durch einen Button aufgerufen, was durch ein Label ja nicht funktioniert?
Ab Zeile 62 geht es mit der Funktion los, die aber in welcher Ausführung auch immer nichts lieferte:(.
Auch würde ich gerne eine Stop-Funktion der Motoren durchführen lassen, wenn der Motor Treiber kein Feedback mehr liefert,…
Ich wäre wirklich über jede Hilfe froh,...
Code: Alles auswählen
# Tkinter and GPIO import
import Tkinter
from Tkinter import *
import RPi.GPIO as GPIO
import time, termios, sys, tty
GPIO.setmode(GPIO.BCM)
#Motor Treiber Aktivierung
Enable = 25
GPIO.setup(Enable,GPIO.OUT)
#Motor1 Pins als Aus- und Eingang setzen
Motor1_D = 19
Motor1_On = 20
Motor1_F = 21
GPIO.setup(Motor1_D,GPIO.OUT)
GPIO.setup(Motor1_On,GPIO.OUT)
GPIO.setup(Motor1_F,GPIO.IN)
#Motor2 Pins als Aus- und Eingang setzen
Motor2_D = 22
Motor2_On = 23
Motor2_F = 24
GPIO.setup(Motor2_D,GPIO.OUT)
GPIO.setup(Motor2_On,GPIO.OUT)
GPIO.setup(Motor2_F,GPIO.IN)
#Treiber und Motoren initialisieren: AUS
GPIO.output(Enable,GPIO.LOW)
GPIO.output(Motor1_On,GPIO.LOW)
GPIO.output(Motor2_On,GPIO.LOW)
#Definition der Auf Methode
def Tore_auf():
GPIO.output(Enable,GPIO.HIGH)
GPIO.output(Motor1_On,GPIO.HIGH)
GPIO.output(Motor1_D,GPIO.LOW)
GPIO.output(Motor2_On,GPIO.HIGH)
GPIO.output(Motor2_D,GPIO.LOW)
#Definition der Zu Methode
def Tore_zu():
GPIO.output(Enable,GPIO.HIGH)
GPIO.output(Motor1_On,GPIO.HIGH)
GPIO.output(Motor1_D,GPIO.HIGH)
GPIO.output(Motor2_On,GPIO.HIGH)
GPIO.output(Motor2_D,GPIO.HIGH)
#Definition der Stop Methode
def Tore_stop():
GPIO.output(Enable,GPIO.LOW)
GPIO.output(Motor1_On,GPIO.LOW)
GPIO.output(Motor2_On,GPIO.LOW)
# Definition Quit
def quit():
root.destroy()
# Definition Feedback
def feedback():
var.set ("Status Linearaktuatoren")
# if GPIO.input(Motor2_F):
# var.set ("Motoren laufen")
# else:
# var.set ("Fehler")
# root.update_idletasks()
root = Tk()
root.title("Steuerung Motoren")
var = StringVar()
var.set (feedback())
Fenster = Frame(root)
Fenster.grid_rowconfigure(0, weight=1)
Fenster.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
Fenster.grid(row=0, column=0, sticky=N+S+E+W)
AUFButton = Button(Fenster, text="Tore Auf!", command=Tore_auf)
AUFButton.grid(row=3, column=0, padx=5, pady=5, sticky=N+S+E+W)
ZUButton = Button(Fenster, text="Tore Zu!", command=Tore_zu)
ZUButton.grid(row=3, column=1, padx=5, pady=5, sticky=N+S+E+W)
STOPButton = Button(Fenster, text="Tore Stop!", command=Tore_stop)
STOPButton.grid(row=3, column=2, padx=5, pady=5, sticky=N+S+E+W)
BEENDENButton = Button(Fenster, text="Beenden", fg="red", command=quit)
BEENDENButton.grid(row=3, column=3, padx=5, pady=5, sticky=N+S+E+W)
x = Label(Fenster, bg="grey", textvariable=var)
x.grid(row=2, columnspan=4, padx=10, pady=10, sticky=N+S+E+W)
w = Label(Fenster, bg="grey", text="Status Linearaktuatoren")
w.grid(row=0, rowspan=2, columnspan=4, padx=10, pady=10, sticky=N+S+E+W)
root.mainloop()
GPIO.cleanup()