Hallo
ich habe eine Platine nachgebut mit 2x MCP 23017 die ich als Eingänge benutzen möchte.
Alles was ich dazu gefunden habe kommt dann auf eine Interrupt Programmierung heraus.
Wenn ich dierekt aus lese Funktioniert alles
Allerdings in meinem Script Funktioniert es halb, das bedeutet das die Pins ausgelesen werden aber das Script es nicht zur Grafischen oberfläche schafft.
Das erkläre ich mir so das das Sript in der Schleife festhängt.
Nun weiß ich auch garnicht ob ich auf dem richtigen Weg bin.
vom Grund her soll die Grafische Oberfläche gezeigt werden und die Pins ausgelesen werden.
Das Problem ist auch das ich vermute den Interrupt auch noch nicht verstanden zu haben bzw brauch ich den Überhaupt ?
Wäre froh wenn mich jemand in die richtige Richtung lenkt
Wichtig wäre mir als Anfänger auch das ich bei smbus bzw (read_byte_data) bleiben könnte
from tkinter import *
import tkinter as tk
import smbus
import time
bus = smbus.SMBus(1)
bus.write_byte_data (0x22,0x00,0xff)
bus.write_byte_data (0x22,0x01,0xff)
class Lichter(tk.Label):
def __init__(self, title, text):
tk.Label.__init__(self, text=text, height = 5, width = 5, bg = "#9ACD32")
def main():
fenster = tk.Tk()
fenster.title("Smart Home Display")
fenster.geometry("1024x600")
fenster.configure(background="#330000")
Räume = ("Schlaf1","Schlaf2","Gallerie","Flur","Küche1","Küche2","Hof","Garten","Essen",
"Wohn","TV","Couch","Wintergarten","Couch2","Schuppen","irgendwas")
for i in range(0,16):
Taster = Lichter(fenster, (Räume[i]))
Taster.place(x=i*60+30,y=280)
try:
while True:
Wert = bus.read_byte_data(0x22,0x12)
time.sleep(0.5)
Wert = bus.read_byte_data(0x22,0x12)
time.sleep(0.5)
except KeyboardInterrupt:
#GPIO.cleanup()
print (Wert)
fenster.mainloop()
if __name__ == '__main__':
main()
Alles anzeigen