Forum: Mikrocontroller und Digitale Elektronik Probleme mit Arduino Uno und Oled Display


von Johannes G. (stromfluss)


Angehängte Dateien:

Lesenswert?

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

von Johannes S. (Gast)


Lesenswert?

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.

von PittyJ (Gast)


Lesenswert?

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.

von DoS (Gast)


Lesenswert?

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.

von mööp (Gast)


Lesenswert?

digitalWrite(FanPin, 65);

von Johannes G. (stromfluss)


Lesenswert?

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

von PittyJ (Gast)


Lesenswert?

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?

von Johannes G. (stromfluss)


Lesenswert?

Der DHT ist richtig verkabelt. Im Stand alone Sketch misst der Sensor 
die richtige Temperatur. Oszi habe ich leider keins zur Hand.

von Frank G. (frank_g53)


Lesenswert?

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

von PittyJ (Gast)


Lesenswert?

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.

von Johannes G. (stromfluss)


Lesenswert?

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.

von Johannes S. (Gast)


Lesenswert?

Da ist noch ein wilder Mix aus digital/analogWrite. Vielleicht mal den 
ganzen if/else Teil testweise auskommentieren.

von Johannes G. (stromfluss)


Lesenswert?

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?

von Johannes G. (stromfluss)


Lesenswert?

@JoJos - Habe bereits den kompletten if / else Teil ausgeklammert, 
wieder ohne Erfolg

von Frank G. (frank_g53)


Lesenswert?

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

von Johannes G. (stromfluss)


Lesenswert?

Ohne Adafruit Libery scheint es aktuell zu klappen. Danke :-)

von Johannes S. (Gast)


Lesenswert?

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?

von DoS (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.