RPi4 mit LCD 2004 und zwei DHT22
Verfasst: Mittwoch 20. September 2023, 12:14
Hallo Community,
ich bin zumindest was Python angeht noch relativ neu.
Ich versuche gerade mir auf einem 20x4 LCD einige
Informationen anzeigen zu lassen.
Zeile 1 & 3: ein definierter Text
Zeile 2: links das aktuelle Datum, rechts die Temperatur vom RPi
Zeile 4: die Temperaturen von zwei DHT22-Sensoren
Im Moment bekomme ich keine Anzeige zustande.
Das Display flackert nur alle paar Sekunden auf.
Richtig angeschlossen ist es wohl, da ein anderer Scipt funktioniert.
Mein Code:
Ich stehe gerade auf dem Schlauch und komme einfach nicht weiter.
Vielleicht ist hier jemand so nett und findet die Zeit hier einmal drüber zu schauen?
Gruß
Klaus
ich bin zumindest was Python angeht noch relativ neu.
Ich versuche gerade mir auf einem 20x4 LCD einige
Informationen anzeigen zu lassen.
Zeile 1 & 3: ein definierter Text
Zeile 2: links das aktuelle Datum, rechts die Temperatur vom RPi
Zeile 4: die Temperaturen von zwei DHT22-Sensoren
Im Moment bekomme ich keine Anzeige zustande.
Das Display flackert nur alle paar Sekunden auf.
Richtig angeschlossen ist es wohl, da ein anderer Scipt funktioniert.
Mein Code:
Code: Alles auswählen
import Adafruit_CharLCD as LCD
import Adafruit_DHT
import subprocess
from datetime import datetime
import time
#LCD-Display
lcd = LCD.Adafruit_CharLCDPlate(0x27)
#LCD
LCD_WIDTH = 20
LCD_LINES = 4
#Zeilen 1 & 3
line1_text = "-- xxxxxXXXXXX --"
line3_text = "..Temp_IN---Temp_OUT.."
#Ermittlung der Raspberry Pi-Temperatur
def get_raspberry_pi_temperature():
temperature = subprocess.check_output(['vcgencmd', 'measure_temp']).decode('utf-8')
return temperature.split('=')[1]
#DHT22-Temperatur
def get_dht22_temperature(pin):
humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, pin)
if temperature is not None and temperature >0 and temperature < 100:
return f"{temperature:.1f}°C"
else:
return "N/A"
try:
while True:
#Aktuelles Datum und Uhrzeit
current_datetime = datetime.now().strftime("%d.%b.%y")
#Raspberry Pi-Temperatur
raspberry_pi_temp = get_raspberry_pi_temperature()
#DHT22-Temperaturen
dht22_temp_pin22 = get_dht22_temperature(22)
dht22_temp_pin27 = get_dht22_temperature(27)
time.sleep(2)
#LCD Anzeigen
lcd.clear()
lcd.message(line1_text.center(LCD_WIDTH) + "\n")
lcd.message(f"{current_datetime}".ljust(LCD_WIDTH - len(raspberry_pi_temp)) + f"{raspberry_pi_temp}\n")
lcd.message(line3_text.center(LCD_WIDTH) + "\n")
lcd.message(f"Temp_IN: {dht22_temp_pin22} Temp_OUT: {dht22_temp_pin27}".ljust(LCD_WIDTH) + "\n")
time.sleep(3) # Aktualisieren alle 5 Sekunden
except KeyboardInterrupt:
pass
finally:
lcd.clear()
Vielleicht ist hier jemand so nett und findet die Zeit hier einmal drüber zu schauen?
Gruß
Klaus