Hallo zusammen,
kurze Vorstellung meinerseits:
schon in etwas fortgeschrittenem Alter und das letzte mal mit Pascal vor ein paar Jahrzehnten programmiert.
Der kleine Raspberry interessiert mich und ich möchte mal wieder etwas auf basteln.
Das Computerchen ist da, ein TFT-Display angestöpselt, NOOBS und Python3 installiert, ein paar Kleinteile beschafft und los geht's.
Nach dem Studium eines Handbuchs wollte ich die ersten Gehversuche unternehmen - Anzeige von Datum, Uhrzeit sowie Temperatur und Luftfeuchte.
Die Anleitungen in einem Buch sind ganz nett, doch sobald etwas nicht funktioniert - na, ann stehste da und guckst blöd aus der Wäsche.
Mein Problem ist, dass zwar die Uhrzeit und die Stellung eines Taster zyklisch angezeigt werden, nicht jedoch Temperatur und Luftfeuchte.
Ich habe viel gelesen und nichts hilfreiches gefunden.
Evtl. kann mir einer von Euch helfen.
Anbei mein Code:
#!/usr/bin/python3
from tkinter import *
import Adafruit_DHT # Sensoren
import time
import RPi.GPIO as gpio, signal
# Zuweisen der Variablen für den Sensor
sensor = Adafruit_DHT.DHT22
pin = 4 # GPIO Pin4 => DHT22
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
wait_time = 2000 # Wartezeit in ms
SWITCH=21 # GPIO Pin21 => Taster
gpio.setmode(gpio.BOARD)
gpio.setwarnings(False)
gpio.setup(SWITCH, gpio.IN)
def taster(n):
if n!=SWITCH: return
if gpio.input(SWITCH) == gpio.LOW:
lbl.configure(text='Der Taster ist gedrückt')
else:
lbl.configure(text='Der Taster ist nicht gedrückt')
# Tastenzustand alle 50ms abfragen
def polltaster():
taster(SWITCH)
mywin.after(50, polltaster)
# Termperatur alle 2 sec auslesen und anzeigen
def temp():
lbl2.configure(text= 'Temperatur: %.1f °C' %temperature)
mywin.after(5000, temp)
def humid():
lbl3.configure(text = 'Luftfeuchte: %.1f' %humidity)
mywin.after(5000, humid)
def akt_uhrzeit():
t = time
auz = t.strftime('%H:%M:%S')
lbl4.configure(text = 'Uhrzeit: '+auz)
mywin.after(1000, akt_uhrzeit)
def akt_datum():
d = time
a_d = d.strftime('%d.%m.%y')
lbl5.configure(text = 'Datum: ' +a_d)
mywin.after(10000, akt_datum)
# Benutzeroberfläche
mywin = Tk()
mywin.geometry('250x150') # Fenstergröße
mywin.wm_title('Inputs') # Fenstertitel
lbl = Label(mywin)
lbl.pack(pady=5) # "pady" => Zeilenabstand
polltaster()
lbl2 = Label(mywin)
lbl2.pack(pady=5) # "pady" => Zeilenabstand
temp() # Anzeige der Temperatur
lbl3 = Label(mywin)
lbl3.pack(pady=5) # "pady" => Zeilenabstand
humid() # Anzeige der Luftfeuchte
lbl4 = Label(mywin)
lbl4.pack(pady=5)
akt_uhrzeit()
lbl5 = Label(mywin)
lbl5.pack(pady=5)
akt_datum()
gpio.add_event_detect(21, gpio.BOTH, bouncetime=50)
gpio.add_event_callback(21, taster)
mywin.mainloop()
Alles anzeigen
Wo habe ich den Fehler eingebaut?
Über Hilfe würde ich mich freuen.
Besten Dank im voraus
Alex