20x4 LCD zeigt nur die erste und dritte Zeile

Hallo Forum,

seit ein paar Tagen habe ich ein 2004A Display vor mir liegen und bekomm leider keinen Text drauf.

Verkabelt habe ich alles wie im Hello World Tutorial der LiquidCrystal Library erklärt wird. Ich nutze auch diesen Code:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(20, 4);
  lcd.print("hello, world!");
}

void loop() {
  lcd.setCursor(0, 1);
  lcd.print(millis()/1000);
  delay(1000);
}

Wie man im Titel und Anhang 1 sieht wird die erste und dritte Zeile mit Blöcken gefüllt, aber auch nur wenn ich einen Delay in den Loop packe. Vermutlich kann mein Display keine Informaionen verarbeiten, wenn diese zu schnell kommen, oder? [Anhang 2]

Das tut aber sowieso nichts zur Sache, meine Frage wäre theoretisch nur was ich falsch mache:

  • Liegt es vielleicht an der Library?
  • Könnte es das Setup sein?
  • Muss ich ein anderes als bei einem 16x2 LCDs verwenden?

Ich benutze das Standart 16-pin layout mit 4 bits.
Das LCD wird von einem HD44780 ohne I2C gesteuert.

Hoffentlich weiß jemand was schief läuft!

Man aktualisiert das Display nur, wenn etwas neues kommt. Dauerhaft beschreiben kann man genauso wenig sehen, als wenn man eine Led ohne delay/millis togglen würde.

moin, dieses Bild (zwei Reihen Blöcke) bekomme ich hier in jedem Fall, wenn das Display erst garnicht initialisiert wird. Ich würde vorschlagen, die Verdrahtung / Beschaltung noch einmal akribisch zu überprüfen

Manfred

Edit: schreibe mal beim "lcd.begin(20,4);" die Parameter ohne Leerzeichen nach dem Komma

sschultewolter: Hoffentlich weiß jemand was schief läuft!

Die LiquidCrystal-Library berücksichtigt nicht jedes mögliche Speicher-Layout des HD44780.

Hast Du mal probiert, 40 Zeichen in einer Zeile auszugeben?

Das Speicher-Layout Deines Displays könnte auch so organisiert sein, dass das Display nur zwei logische Zeilen enthält, und tatsächlich ist es so: - 1. Zeile Display ==> Zeichen 0...19 der logischen 1. Zeile - 2. Zeile Display ==> Zeichen 20...39 der logischen 1. Zeile - 3. Zeile Display ==> Zeichen 0...19 der logischen 2. Zeile - 4. Zeile Display ==> Zeichen 20...39 der logischen 2. Zeile

Zum Schreiben der 2. Zeile müßtest Du den Cursor dann auf lcd.setCursor(20, 0); setzen und zum Schreiben der 4. Zeile auf lcd.setCursor(20, 1);

Probier's mal aus!

Das Bild mit den 2 Reihen Blöcken ist das "Anfangsbild" zum Einstellen des Kontrastes. Dieses bleibt bis das Display initialisiert wird. Grüße Uwe

sschultewolter: Man aktualisiert das Display nur, wenn etwas neues kommt. Dauerhaft beschreiben kann man genauso wenig sehen, als wenn man eine Led ohne delay/millis togglen würde.

da der Threadersteller einen Zeitvernichter (delay(1000);) eingebaut hat, würde die Ausgabe eh nur einmal jede Sekunde erfolgen und da er ebenfalls jedesmal vor jeder Ausgabe die Cursorposition neu setzt, sollte eine schlichte Zahlenausgabe an der ersten Stelle erfolgen, völlig unabhängig davon, wie die nachfolgenden Zeilen intern organisiert sein mögen.

Danke erstmal für die schnellen Antworten!

Trotzdem gehts nicht :(

  • Verkabelung ist mit 100% sicherheit korrekt
  • 40 Zeichen in einer Zeile sinds anscheinend auch nicht

Wie kann ich den das LCD initialisieren, ich denke das passiert mit lcd.begin(x,y), oder?

moin, wenn die Verkabelung 100%ig in Ordnung ist (und genau so wie im genannten Tutorial ausgeführt), bleibt nur ein Defekt des Displays. Meine diversen Modelle aus dem Hause Pollin waren bisher allesamt funktionsfähig und wenn Probleme auftraten, dann waren eigene, hausgemachte Fehler die Ursache. Allem voran musste ich mich mehrfach vergewissern, dass die Ports D2, D3, D4, und D5 quasi umgekehrt auf die Anschlüsse D7, D6, D5 und D4 führen...

Manfred

Edit: ja, die Initialisierung geschieht über lcd.begin()

Die "Standard" LCD-Bibliothek kann nicht mit vierzeiligen Displays! (Hatte das Problem schon vor zwei Jahren.) Ich könnte bei Bedarf eine auf die schnelle gepatchte Version bei github einstellen.

ylf_de: Die "Standard" LCD-Bibliothek kann nicht mit vierzeiligen Displays! (Hatte das Problem schon vor zwei Jahren.) Ich könnte bei Bedarf eine auf die schnelle gepatchte Version bei github einstellen.

Meine beiden, 16x4 und 20x4, also 4-zeilige, laufen mit der Standard LiquidCrystal Lib! Einzig erforderlicher Patch [u]zwischen[/u] beiden ist für den Versatz der ersten Position der dritten und vierten Zeile um 4 Stellen.

Manfred