Willi-SH
23.12.2025, 17:15 |
Arduino und LCD2004 mit I2C (Bauelemente) |
Hallo zusammen,
ich versuche mich gerade am Arduino mit angeschlossenen 4 zeiligem LCD-Display und von mir angelötetem I2C.
Ich habe ein Sketch geschrieben, mit dem ich in jeder Zeile einen Text ausgebe. Funktioniert auch prima.
Allerdings fängt das Display nach 2-3 Minuten an zu blinken und zeigt nur noch wirre Zeichen.
Da frage mich jetzt: Ist das Display kaputt, oder ist es schlecht gelötet?
Wenn es schlecht gelötet ist, wäre dann überhaupt eine anfänglich saubere Ausgabe möglich? |
xy

23.12.2025, 17:49
@ Willi-SH
|
Arduino und LCD2004 mit I2C |
Zeig den Aufbau. |
bastelix
24.12.2025, 02:13
@ xy
|
Arduino und LCD2004 mit I2C |
» Zeig den Aufbau.
Und den Code |
Willi-SH
24.12.2025, 11:54
@ xy
|
Arduino und LCD2004 mit I2C |
» Zeig den Aufbau.
 |
Willi-SH
24.12.2025, 11:59
@ bastelix
|
Arduino und LCD2004 mit I2C |
#include <Wire.h> // Wire Bibliothek hochladen
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup()
{
lcd.begin(20,4);
lcd.init(); // Initialisiere das Display
lcd.backlight(); // Aktiviere die Hintergrundbeleuchtung, sonst bleibt das Display dunkel.
}
void loop()
{
lcd.setCursor(0,0);
lcd.print("Dies ist ein 1. Text" ;
lcd.setCursor(0,1);
lcd.print("Dies ist ein 2. Text" ;
lcd.setCursor(0,2);
lcd.print("Dies ist ein 3. Text" ;
lcd.setCursor(0,3);
lcd.print("Dies ist ein 4. Text" ;
}
Ich hoffe, der Aufbau und der Code hilft bei der Beantwortung meiner Frage.
Allen wünsche ich frohe Weihnachten |
xy

24.12.2025, 12:08
@ Willi-SH
|
Arduino und LCD2004 mit I2C |
Spannungsregler des UNO überlastet? Versorg den mal über USB.
Und die Käbelchen werden auch noch CCS sein...
»  |
grindstone

Ruhrpott, 24.12.2025, 12:33 (editiert von grindstone am 24.12.2025 um 12:36)
@ Willi-SH
|
Arduino und LCD2004 mit I2C |
» ...
» }
» void loop()
» {
» lcd.setCursor(0,0);
» lcd.print("Dies ist ein 1. Text" ;
» lcd.setCursor(0,1);
» lcd.print("Dies ist ein 2. Text" ;
» lcd.setCursor(0,2);
» lcd.print("Dies ist ein 3. Text" ;
» lcd.setCursor(0,3);
» lcd.print("Dies ist ein 4. Text" ;
» }
Möglicherweise gerät der Displaycontroller irgendwann aus dem Takt, wenn er ständig derart mit Kommandos bombardiert wird. Versuch mal, ein
delay(1000);
an das Ende der Schleife zu hängen oder auch ein
delay(10);
nach jedem print-Befehl einzufügen. -- Es ist unter der Würde eines Technikers, die Gebrauchsanweisung zu lesen! |
volvodidi
Bonn / Medevi, 24.12.2025, 13:29
@ Willi-SH
|
Arduino und LCD2004 mit I2C |
Hej Willy,
dann nimmst du diesen Sketch.
Die passende Lib lädst du hier: https://werner.rothschopf.net/microcontroller/images/lcd/NoiascaLiquidCrystal.zip
Die Lib im zip Format kannst direkt in der IDE einbinden.
Dann kommt nachher auch nicht die Frage wie du Umlaute mit einbinden kannst .
#include <Wire.h> // needed for the I2C interface
#include <NoiascaLiquidCrystal.h> // download library from https://werner.rothschopf.net/202009_arduino_liquid_crystal_intro.htm
#include <NoiascaHW/lcd_PCF8574.h> // include the proper IO interface
const byte cols = 20; // columns/characters per row
const byte rows = 4; // how many rows
const byte addr = 0x27; // set the LCD address to 0x3F or 0x27
LiquidCrystal_PCF8574 lcd(Wire, addr, cols, rows); // create lcd object - with support of special characters
void setup()
{
Wire.begin(); // start I2C library
lcd.begin(); // initialize the LCD
lcd.backlight(); // turn on backlight
lcd.setCursor(1, 0);
lcd.print("Hello, world!" ;
lcd.setCursor(0, 1);
lcd.print("????°÷???äöüßÄÖÜ" ; // show some special character entered in UTF-8
if (rows > 2)
{
lcd.setCursor(0, 2);
lcd.print("Noiasca LC I2C 2022" ;
lcd.setCursor(2, 3);
lcd.print("Powered by noiasca" ;
}
}
void loop()
{
lcd.setCursor(0,0);
lcd.print("Dies ist ein 1. Text" ;
lcd.setCursor(0,1);
lcd.print("Dies ist ein 2. Text" ;
lcd.setCursor(0,2);
lcd.print("Dies ist ein 3. Text" ;
lcd.setCursor(0,3);
lcd.print("Dies ist ein 4. Text" ;
}
Gruß
Dieter aus S |
Pitsch
25.12.2025, 07:27
@ grindstone
|
Arduino und LCD2004 mit I2C |
» » ...
» » }
» » void loop()
» » {
» » lcd.setCursor(0,0);
» » lcd.print("Dies ist ein 1. Text" ;
» » lcd.setCursor(0,1);
» » lcd.print("Dies ist ein 2. Text" ;
» » lcd.setCursor(0,2);
» » lcd.print("Dies ist ein 3. Text" ;
» » lcd.setCursor(0,3);
» » lcd.print("Dies ist ein 4. Text" ;
» » }
» Möglicherweise gerät der Displaycontroller irgendwann aus dem Takt, wenn
» er ständig derart mit Kommandos bombardiert wird.
Hallo
Wenn das der Fall ist, so köntest Du versuchen, den Schreibbefehl mit einer Flanken-Triggerung, auf ein Ereigniss (z.B. Button, Eingang, geht von Low auf Hight) oder sowas
nur einmal zu senden.
mit freundlichen Grüssen! Pitsch |
grindstone

Ruhrpott, 25.12.2025, 16:26 (editiert von grindstone am 25.12.2025 um 16:38)
@ Pitsch
|
Arduino und LCD2004 mit I2C |
» Hallo
» Wenn das der Fall ist, so köntest Du versuchen, den Schreibbefehl mit
» einer Flanken-Triggerung, auf ein Ereigniss (z.B. Button, Eingang, geht von
» Low auf Hight) oder sowas
» nur einmal zu senden.
Er hat ja geschrieben, dass es in den ersten Minuten funktioniert. Wenn das Display samt Programmierung erst einmal in einer konkreten Anwendung steckt, wird es sowieso seltener angesprochen.
Ich habe ganz dunkel im Hinterkopf, dass es bei dieser Art Displays Timingprobleme gab, aber das betraf soweit ich mich erinnern kann die korrekte Initialisierung. Die scheint hier ja zu funktionieren.
Möglicherweise reichen auch die Pull-up-Widerstände (ich gehe mal davon aus, dass diese bei der Initialisierung vom Treiberprogramm aktiviert werden) des Arduino nicht aus, um die Signale sicher auf einem definierten Pegel zu halten. Da könnte man eventuell SDA und SCL mit je einem zusätzlichen 10k-Widerstand auf Vdd ziehen. -- Es ist unter der Würde eines Technikers, die Gebrauchsanweisung zu lesen! |
Willi-SH
26.12.2025, 12:08
@ xy
|
Arduino und LCD2004 mit I2C |
» Spannungsregler des UNO überlastet? Versorg den mal über USB.
Normalerweise läuft der auch über USB. Die Batterie habe ich nur angeschlossen, um schnell ein Bild vom Aufbau zu machen.
» Und die Käbelchen werden auch noch CCS sein...
Was heißt das? |
Willi-SH
26.12.2025, 12:19
@ grindstone
|
Arduino und LCD2004 mit I2C |
Ich habe den Code jetzt leicht verändert:
void loop()
{
lcd.setCursor(0,0);
lcd.print("Der erste Text" ;
lcd.setCursor(0,1);
lcd.print("Der zweite Text" ;
lcd.setCursor(0,2);
lcd.print("Der dritte Text" ;
lcd.setCursor(0,3);
lcd.print("Der vierte Text" ;
delay(1000);
}
Der delay-Befehl hat leider nicht zum Erfolg geführt. Das Display hat wieder nach kurzer Zeit "gestreikt".
Jetzt habe ich mein vierzeiliges Display gegen mein zweizeiliges Display getauscht. Das Display gibt natürlich nur die ersten beiden Zeilen aus,
aber es funktioniert nun schon über 30 Minuten, auch ohne delay.
Ich gehe jetzt davon aus, dass der Code in Ordnung ist.
Kann evtl. doch das Display defekt sein? |
GerK
26.12.2025, 13:52
@ Willi-SH
|
Arduino und LCD2004 mit I2C |
» » Und die Käbelchen werden auch noch CCS sein...
Halt mal einen Magneten an die Drähtchen. |
xy

26.12.2025, 14:01
@ Willi-SH
|
Arduino und LCD2004 mit I2C |
» » Und die Käbelchen werden auch noch CCS sein...
» Was heißt das?
Kein Kupfer, sondern Stahl, hauchdünn verkupfert. |