I2C-Digital-Input-Modul mit Python und TkInter

Eingänge vom I2HE-Modul einlesen

Das Programmbeispiel liest alle 20ms das Byte von der Eingangskarte ein, und schreibt den Wert in ein Label.

I2C-Input Modul einlesen und im Label anzeigen

I2C-Input Modul einlesen und im Label anzeigen

 

Module importieren und Globale Variable definieren

im Hauptprogramm werden einige  Module importiert.

Außerdem braucht jede Eingabekarte eine globale Variable die wir einfach mal in1 für die erste Input-karte nennen

import tkinter as tk
import smbus

mainWin = tk.Tk()
mainWin.title(‚Digital Input‘)

bus = smbus.SMBus(1)

in1 = 0

 

Falls der Import vom SM-Bus nicht funktioniert muss dieser erst noch auf dem Raspberry-Pi installiert werden. Diese Anleitung hilft dabei recht gut. https://pypi.python.org/pypi/smbus-cffi

 

Programmcode

import tkinter as tk
import smbus

mainWin = tk.Tk()
mainWin.title('Digital Input')

bus = smbus.SMBus(1)

in1 = 0

def wert(label):
    def read():
        global in1
        var=bus.read_byte_data(0x38,255)  #Wert von der Digital-Input-Karte lesen
        in1 = 255-var                     #Wert invertieren
        label.config(text=str(in1))       #Wert in Label schreiben
        label.after(20, read)             #Funktion in 20ms erneut aufrufen
    read()

label = tk.Label(mainWin, width=15)
label.grid(row=1,column=1)

wert(label)

mainWin.mainloop()

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.