Liebe Gemeinde,
da ich gerade nicht weiterkomme, hoffe ich auf eure Hilfe.
Mein Code:
Code
import time
import RPi.GPIO as GPIO
import Adafruit_DHT
import Adafruit_BMP.BMP085 as BMP085
sensor=Adafruit_DHT.DHT22
sensor = BMP085.BMP085()
sensor = BMP085.BMP085(mode=BMP085.BMP085_ULTRAHIGHRES)
pin=15
LCD_RS = 4
LCD_E = 17
LCD_DATA4 = 18
LCD_DATA5 = 22
LCD_DATA6 = 23
LCD_DATA7 = 24
LCD_WIDTH = 16 # Zeichen je Zeile
LCD_LINE_1 = 0x80 # Adresse der ersten Display Zeile
LCD_LINE_2 = 0xC0 # Adresse der zweiten Display Zeile
LCD_CHR = GPIO.HIGH
LCD_CMD = GPIO.LOW
E_PULSE = 0.0005
E_DELAY = 0.0005
def lcd_send_byte(bits, mode):
# Pins auf LOW setzen
GPIO.output(LCD_RS, mode)
GPIO.output(LCD_DATA4, GPIO.LOW)
GPIO.output(LCD_DATA5, GPIO.LOW)
GPIO.output(LCD_DATA6, GPIO.LOW)
GPIO.output(LCD_DATA7, GPIO.LOW)
if bits & 0x10 == 0x10:
GPIO.output(LCD_DATA4, GPIO.HIGH)
if bits & 0x20 == 0x20:
GPIO.output(LCD_DATA5, GPIO.HIGH)
if bits & 0x40 == 0x40:
GPIO.output(LCD_DATA6, GPIO.HIGH)
if bits & 0x80 == 0x80:
GPIO.output(LCD_DATA7, GPIO.HIGH)
time.sleep(E_DELAY)
GPIO.output(LCD_E, GPIO.HIGH)
time.sleep(E_PULSE)
GPIO.output(LCD_E, GPIO.LOW)
time.sleep(E_DELAY)
GPIO.output(LCD_DATA4, GPIO.LOW)
GPIO.output(LCD_DATA5, GPIO.LOW)
GPIO.output(LCD_DATA6, GPIO.LOW)
GPIO.output(LCD_DATA7, GPIO.LOW)
if bits&0x01==0x01:
GPIO.output(LCD_DATA4, GPIO.HIGH)
if bits&0x02==0x02:
GPIO.output(LCD_DATA5, GPIO.HIGH)
if bits&0x04==0x04:
GPIO.output(LCD_DATA6, GPIO.HIGH)
if bits&0x08==0x08:
GPIO.output(LCD_DATA7, GPIO.HIGH)
time.sleep(E_DELAY)
GPIO.output(LCD_E, GPIO.HIGH)
time.sleep(E_PULSE)
GPIO.output(LCD_E, GPIO.LOW)
time.sleep(E_DELAY)
def display_init():
lcd_send_byte(0x33, LCD_CMD)
lcd_send_byte(0x32, LCD_CMD)
lcd_send_byte(0x28, LCD_CMD)
lcd_send_byte(0x0C, LCD_CMD)
lcd_send_byte(0x06, LCD_CMD)
lcd_send_byte(0x01, LCD_CMD)
def lcd_message(message):
message = message.ljust(LCD_WIDTH," ")
for i in range(LCD_WIDTH):
lcd_send_byte(ord(message[i]),LCD_CHR)
if __name__ == '__main__':
# initialisieren
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(LCD_E, GPIO.OUT)
GPIO.setup(LCD_RS, GPIO.OUT)
GPIO.setup(LCD_DATA4, GPIO.OUT)
GPIO.setup(LCD_DATA5, GPIO.OUT)
GPIO.setup(LCD_DATA6, GPIO.OUT)
GPIO.setup(LCD_DATA7, GPIO.OUT)
display_init()
x = 0
while True:
for i in range(2):
if i==0:
humidity, temperature=Adafruit_DHT.read_retry(sensor, pin)
lcd_send_byte(LCD_LINE_1, LCD_CMD)
lcd_message("Temp: {0:0.1f}\337C".format(temperature))
lcd_send_byte(LCD_LINE_2, LCD_CMD)
lcd_message("Humidity: {0:0.1f}%".format(humidity))
time.sleep(5)
x += 1
if i==1:
lcd_send_byte(LCD_LINE_1, LCD_CMD)
lcd_message("Temp: {0:0.1f}\337C".format(sensor.read_temperature()))
lcd_send_byte(LCD_LINE_2, LCD_CMD)
lcd_message("Druck: {0:0.0f} hPa".format(sensor.read_pressure()/100))
time.sleep(5)
x -= 1
GPIO.cleanup()
Alles anzeigen
Die Fehlermeldung(en):
Code
>>> ================================ RESTART ================================
>>>
Traceback (most recent call last):
File "/home/pi/Desktop/Wetterdisplay.py", line 97, in <module>
humidity, temperature=Adafruit_DHT.read_retry(sensor, pin)
File "build/bdist.linux-armv7l/egg/Adafruit_DHT/common.py", line 90, in read_retry
humidity, temperature = read(sensor, pin, platform)
File "build/bdist.linux-armv7l/egg/Adafruit_DHT/common.py", line 74, in read
raise ValueError('Expected DHT11, DHT22, or AM2302 sensor value.')
ValueError: Expected DHT11, DHT22, or AM2302 sensor value.
>>>
Alles anzeigen
Eine Änderung in Zeile 97 in DHT22 funktioniert nicht, denn:
Danke im Voraus!
Gruß!