Hallo zusammen,
ich war mir nicht sicher, ob mein Thread eher hier oder ins Elektronik-Forum gehört. Bei Bedarf bitte einfach verschieben.
Mein Problem:
Ich habe gestern meine ersten Experimente mit dem Raspberry Pi 4 gemacht und über ein GUI-Programm eine LED zum Leuchten und Blinken gebracht. Das hat auch super funktioniert. Nun möchte ich, dass bei der "Blinkerfunktion" ein Label anzeigt,ob die LED nun brennt oder nicht. Da hänge ich gerade - wenn ich eine Meldung auf der Konsole ausgebe,klappt esaber.
Bei meinem jetzigen Code erhalte ich folgende Fehlermeldung: RecursionError: maximum recursion depth exceeded while calling a Python object
Als Anfänger sagt mir das leider nicht viel.
Ich würde zur Erläuterung hier mal meinen Code posten und würde mich über Unterstützung freuen.
import RPi.GPIO as GPIO
import time
import tkinter
class Hauptprogramm:
def __init__(self):
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(4, GPIO.OUT)
self.hauptfenster = tkinter.Tk()
self.anzeige =tkinter.Label(self.hauptfenster, text = " ----")
self.anzeige.pack()
self.buttonan = tkinter.Button(self.hauptfenster, text="LED an", width=40, command=self.an).pack()
self.buttonaus = tkinter.Button(self.hauptfenster, text="LED aus", width=40,command=self.aus).pack()
self.buttonblinken = tkinter.Button(self.hauptfenster, text="Blinklicht", width=40,command=self.blinken).pack()
self.buttonende = tkinter.Button(self.hauptfenster, text="Ende",width=40,command=self.ende).pack()
def an(self):
GPIO.output(4,1)
self.anzeige["text"]="LED an"
def aus(self):
GPIO.output(4,0)
self.anzeige["text"]="LED aus"
def blinken(self):
for i in range(1,4):
GPIO.output(4,1)
self.anzeiger()
time.sleep(2)
GPIO.output(4,0)
self.anzeiger()
time.sleep(2)
self.anzeige["text"]="fertig geblinkt"
def anzeiger(self):
if GPIO.input(4):
self.anzeige["text"]= "Blinker an"
#print ("Blinker an")
else:
self.anzeige["text"] = "Blinker aus"
#print ("Blinker aus")
self.anzeige.after(100,self.anzeiger(),self.anzeige)
def ende(self):
GPIO.output(4,0)
self.hauptfenster.destroy()
def main():
global hauptprogramm
hauptprogramm = Hauptprogramm()
hauptprogramm.hauptfenster.mainloop()
#Hauptprogramm
if __name__ == '__main__':
main()
Alles anzeigen