Pico beginners Guide Fehler im Programm?

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Schlangenmensch
User
Beiträge: 61
Registriert: Freitag 18. Februar 2022, 10:13

Hallo,
ich bin seit langem wieder einmal dazu gekommen mich mit meinem Raspberry Pico und dessen Programmierung zu beschäftigen. Momentan versuche ich gerade ein Tutorial durchzuarbeiten, welches das Messen der Temparatur und die Anzeige auf dem LCD Display beschreibt.
Leider bekomme ich bei der Ausführung des Programmes immer folgende Fehlermeldung:

Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "dht11.py", line 6, in <module>
AttributeError: 'module' object has no attribute 'DHT11'

Das Programm ist wie folgt geschrieben:

from lcd1602 import LCD1602
from dht11 import *
from machine import I2C,Pin,ADC
from utime import sleep

i2c = I2C(1,scl=Pin(7), sda=Pin(6), freq=400000)
d = LCD1602(i2c, 2, 16)
d.display()
dht = DHT(18)

while True:
temp,humid = dht.readTempHumid()
sleep(1)
d.clear()

d.setCursor(0,0)
d.print("Temp:"+str(temp))
d.setCursor(0,1)
d.print("Humid:"+str(humid))
sleep(1)

Die library File:

import dht11

instance = dht11.DHT11(pin = 14)
result = instance.read()

if result.is_valid():
print("Temperature: %-3.1f C" % result.temperature)
print("Humidity: %-3.1f %%" % result.humidity)
else:
print("Error: %d" % result.error_code)

Leider komme ich nicht darauf, wo der Fehler ist und hoffe Ihr könnt mir weiter helfen.

Über eine Antwort würde ich mich sehr freuen.

Viele Grüße
Patrick
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich vermute du hast dich verhaspelt bei der Benennung deiner Bibliotheken, und dht11.py ist nicht, was es sein sollte.
Schlangenmensch
User
Beiträge: 61
Registriert: Freitag 18. Februar 2022, 10:13

Müsste bei "fromdht11" import * nicht die Datei bzw. die Bibliothek (dht11) stehen?
Benutzeravatar
Dennis89
User
Beiträge: 1153
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

was steht denn in deiner 'dht11.py'-Datei?
Bitte im Code-Block einfügen, das ist im vollständigen Editor der </>-Button.

Wieso brauchst du denn 3 Dateien um den Sensor auszulesen?

Du importierst in beiden gezeigten Programmen die 'dht11.py' einmal willst du auf DHT11 zugreifen und ein mal nur auf 'DHT' (vermute ich, durch dein *-Import muss man raten, wo die Namen herkommen.). Irgendwie ist da noch etwas verrutscht.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Schlangenmensch
User
Beiträge: 61
Registriert: Freitag 18. Februar 2022, 10:13

So, hatte mal wieder ein paar Minuten Zeit und habe am Programm herumgebastelt. Nun wird es ohne Fehlermeldung ausgeführt und macht auch sonst was es soll.
Bei dem Programm werden sich wohl einige von Euch die Haare raufen, ich bin aber erstmal froh, daß ich es zum Laufen gebracht habe.

Verbesserungsvorschläge / Kritik sind willkommen.

Gruß
Patrick
Schlangenmensch
User
Beiträge: 61
Registriert: Freitag 18. Februar 2022, 10:13

Sollte mal noch den Code posten ;-)

from lcd1602 import LCD1602
from machine import Pin,I2C,ADC
from utime import sleep
import utime
from dht import DHT11

i2c =I2C(1,scl=Pin(7), sda=Pin(6), freq=400000)
d = LCD1602(i2c, 2, 16)
d.display()

dhtPin = Pin(18, Pin.IN , Pin.PULL_DOWN)

while True:
utime.sleep(2)
dhtSensor = DHT11(dhtPin)

temp = dhtSensor.temperature

hum = dhtSensor.humidity

d.setCursor(0,0)
d.print("Temp:"+str(temp))
d.setCursor(0,1)
d.print("Humid:"+str(hum))
sleep(1)
Antworten