Forum: Mikrocontroller und Digitale Elektronik I2C/TWI LCD2004 am Arduino Uno stürzt nach paar Minuten ab.


von Mark H. (Firma: Privat) (markherrmann)


Lesenswert?

Hallo lieber Leser.
Ich bin noch ein Anfänger (bisher bissl rumprobiert) und habe ein 
seltsamen Phänomen an meinem neuen Display.

Ich habe einen Arduino Uno R3, an dem ich Sensorenwerte eines DHT22 
auslese.
Diese lasse ich mir auf 2 Displays anzeigen.

Das erste Display ist ein fertiges Shield über viele 2 Zeilig (über 
mehrere Pins verbunden).

Das 2. problematische ist ein I2C/TWI LCD2004 (20x4 Zeichen) über I2C 
Bus.

Beide Displays laufen anfangs gut, wenn ich Werte kontinuierlich in void 
loop {} Teil meines Arduinocodes auf das Display ausgebe, bringt dies 
mein I2C Display so zum absturz, dass der ganze Arduino hängt.

ich mach eigentlich nix anderes als:
setCursor(x,y);
und
lcd.print("irgendwas");

mach ich das (für das I2C Display) nur im void setup teil meines 
programmcodes dann läuft das blöde ding problemlos.

Nur wenn ichs richtig verstanden habe, wird doch nur mehrfach ausgeführt 
was im void loop teil steht, nur dort darf ich nicht ständig neue 
befehle an das I2C Display senden, wenn ich nicht möchte das mein 
Arduion abstürzt.

Muss ich irgendwelche Timinigs beachten?
Ich hoffe ich hab mich verständlich genug formuliert.

von PittyJ (Gast)


Lesenswert?

Ich glaube, der Fehler ist in Zeile 42.

von Mark H. (Firma: Privat) (markherrmann)


Lesenswert?

Sorry! :-)
... habs verstanden ich werd mal eine einfachere Beschreibung machen.
Bei dieser Konfig passierte es auch:

Ich hab das Display (und nur dieses) an den Arduino angeschlossen:
GND, +5V, SCK an (Arduino analog 4) und SCL an (Arduino analog 5)

Ich hab die Hersteller Library verwendet und folgenden Quellcode 
probiert:
1
#include <Wire.h>
2
#include <LiquidCrystal_I2C.h>
3
LiquidCrystal_I2C lcd(0x27,20,4);
4
5
void setup() {
6
lcd.init();
7
lcd.backlight();
8
}
9
10
void loop () {
11
lcd.setCursor(0,0);
12
lcd.printByte("Zeile1");
13
14
lcd.setCursor(0,1);
15
lcd.printByte("Zeile2");
16
17
lcd.setCursor(0,2);
18
lcd.printByte("Zeile3");
19
20
lcd.setCursor(0,3);
21
lcd.printByte("Zeile4");
22
}

Das ganze läuft ca. 2 Minuten, dann zeigt das Display plötzlich ein paar 
kryptische Zeichen ist ist anschliessend nicht mehr funktionsfähig.

Das Display hat hinten 3 Jumper, welche ich abgezogen habe.
Nur so zeigt es überhaupt 4 Zeilen an.

Und zwei Buchsen, welche man über ein beiligendes Kabel verbinden 
könnte.
Hab leider keine Ahnung wofür das sein soll, es funktioniert (am Anfang) 
sowohl mit als auch ohne dies Übrückung der zwei Buchsen.

Auf der Herstellerseite DFRobot finde ich dazu keine Informationen.

von Uwe B. (spitfirexp)


Lesenswert?

Sorry, wenn ich den Topic wieder raufhole.
Habe bei mir ein sehr ähnliches Problem.
Wurde hier eine Lösung gefunden?

MFG Uwe

von Mark H. (Firma: Privat) (markherrmann)


Lesenswert?

Ich mache mittlerweile Pausen zwischen den Ausgaben.
Ich glaub fast, das war ein Pufferüberlauf vorher.

von Uwe B. (spitfirexp)


Lesenswert?

Grade mal probiert.
Bringt mir leider keine Änderung..
Muss ich mal weiter forschen...

von Nicon (Gast)


Lesenswert?

Hi.

Du beschreibst das LCD in jedem Loop-Durchlauf neu.
Das musst du gar nicht. Das Display behält die zuletzt angezeigeten 
Werte.
Du brauchst lediglich einmal eine Änderung an das LCD in nur einem 
Zyklus senden.

Dann sollte auch Dein Problem weg sein.

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.