Hallo Forumsgemeinde, ich bin langsam am verzweifeln. Ich möchte mir mit Hilfe eines Arduinos eine Lüftersteuerung basteln, die sich selbstständig über einen DHT22 regelt. Über ein Oled Display möchte ich zusätzlich die aktuelle Temperatur und die Solltemperatur auslesen. Leider hängt sich mein Display immer beim Booten auf (Adafruit Logo). Ich hänge euch im Anhang mal meinen Code an und hoffe, dass mir jemand helfen kann. Mit freundlichen Grüßen Johannes
Aufhängen gibts nicht, du musst finden wo das in einer Endlosschleife läuft. Ein Königreich für einen Debugger… Angenommen setup() läuft durch, dann wäre das dht read ein Kandidat. Also mal ersetzen durch zuweisen einer festen Temperatur. Oder Print über serial einfügen um das Problem einzugrenzen.
Früher hat man printf eingestreut und geschaut, wo das Programm noch überall hin kommt und welche Werte wichtige Variablen haben. Schade, dass man printf verboten hat.
PittyJ schrieb: > Früher hat man printf eingestreut und geschaut, wo das Programm > noch überall hin kommt und welche Werte wichtige Variablen haben. > Schade, dass man printf verboten hat. Bei jedem anderen Programm ohne OLED und Adafruit-Lib würde ich Dir zustimmen, aber mit der Kombination habe ich auch schon einige Zeit verbracht. Bei den OLEDs gab es einmal einen größeren Artikel was für Unterschiedliche 0,96" I2C OLED-Display auf dem Markt sind. Die Adafruit-OLED-Lib ist ein Speichermonster, auch wenn sie grundsätzlich komfortabel ist. Ich würde den DHT einmal auskommentieren und prüfen, ob das Programm dann läuft. Ich muss mal nachsehen, ob ich die Konstellation nicht nach bauen kann.
Guten Morgen miteinander, vielen Dank für die Rückmeldungen. Ich habe nun Dht.readtemperature ausgeklammert. Nun bootet das Display normal. Logischerweise bekomme ich aber keine Temperatur angezeigt. Wie kann ich den Dht Befehl umgehen/abändern und trotzdem eine Temperatur angezeigt bekommen? Liegt es vielleicht am Float? Ich bin überfragt :( Mit freundlichen Grüßen Johannes
Dann liegt das Problem wohl beim DHT Sensor. Ist der angeschlossen? Am richtigen Pin? Gibt es dafür ein Stand-Alone Programm, so ohne Display? Was sagt das Oszillioskop zur Datenleitung des DHT? Passiert da was? So richtig weisst du nicht, was du da tust?
Der DHT ist richtig verkabelt. Im Stand alone Sketch misst der Sensor die richtige Temperatur. Oszi habe ich leider keins zur Hand.
Johannes G. schrieb: > Wie > kann ich den Dht Befehl umgehen/abändern und trotzdem eine Temperatur > angezeigt bekommen? Du könntest den DHT22 an einem anderen Pin ausprobieren: #define DHTPIN 2
Die DHT-Bibliothek gibt es ja auch als Source. https://github.com/adafruit/DHT-sensor-library Da hilft dann wohl nichts, als die selber compilieren, und schauen, worin es dort hakt. Sind nur 400 Zeilen, also machbar.
Pinbelegung habe ich bereits getauscht, leider ohne Erfolg. Sobald ich den Sensor die Spannung nehme, bootet das Display (natürlich nan Temperatur). Ist der Sensor wieder richtig verkabelt, bootet das Display wieder nicht.
Da ist noch ein wilder Mix aus digital/analogWrite. Vielleicht mal den ganzen if/else Teil testweise auskommentieren.
Lasse ich mir zusätzlich im seriellen Monitor die Temperatur ausgeben, bootet das Display immer noch nicht, die Temperatur wird mir aber im seriellen Monitor fehlerfrei angezeigt. Liegt es vielleicht an der Adafruit Libery? Kann mir jemand zufällig eine andere Libery empfehlen, welches mein Oled 128x64 SH1106 untetstützt? Oder hat jemand zufällig einen Standart Sketch für dieses Display?
@JoJos - Habe bereits den kompletten if / else Teil ausgeklammert, wieder ohne Erfolg
Johannes G. schrieb: > eine andere Library empfehlen Ich verwende Libs aus dieser Quelle: http://www.lcdwiki.com http://www.lcdwiki.com/1.3inch_IIC_OLED_Module_SKU:MC130GX
Ohne Adafruit Libery scheint es aktuell zu klappen. Danke :-)
und mal das
1 | display.print (temp); |
auskommentieren? Es sollte mit float funktionieren, aber eventuell ist es ja doch ein Resourcenproblem (RAM). Was sagt den die Statistik nach dem kompilieren, wieviel ist noch Reserve?
Wenn es um Text geht u8glib. Die funktioniert und schont den Speicher. So schön die Demo von Adafruit ist, man ist mit ihr schnell am Ende und das Fehlerbild ist fatal.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.