LCD Display HD 44780 kompatibel

Hallo zusammen
Folgendes Problem: Habe ein LCD Display von Reichelt (LCD 164 A LED),mit einem Arduino Uno steuere ich das Display an,die ersten zwei Zeilen werden richtig dargestellt,die Zeilen 3 u 4 werden erst ab dem fünften Zeichen dargestellt obwohl alles im Sketch gleich programmiert ist wie in Zeile 1und 2!

Auszug aus meinem Sketch:

LCD.print("mich steuert ein");
LCD.setcursor(0,1);
LCD.print("ein Arduino");
LCD.setcursor(0,2);
LCD.print("beispieltext");
LCD.setcursor(0,3);
LCD.print("beispieltext2");

Wer kann mir helfen?
P.s. Bin aber noch in Sachen Arduino und Elektronik noch Anfänger!! Bitte darum bitte wenn möglich eine einfache Erklärung :slight_smile:
Für Eure Hilfe herzlichen Dank !!!!

Ist das LCD denn richtig initialisiert und wie sieht der Rest des Sketches aus?

Bitte auch Link des Produkts beim Verkäufer.
Grüße Uwe

Ja,
sieht mir auch so aus, als ob er falsch initialisiert hat.

Schick doch mal den ganzen Code. Wie hast du es angeschlossen? Direkt oder über I2C?

ArduinoWolf:
Bitte darum bitte wenn möglich eine einfache Erklärung :slight_smile:

Irgendwo hat Dein Sketch eine von Dir verheimlichte Zeile dieser Art:

lcd.begin(cols, rows);

Da wird vermutlich für cols und/oder rows was falsches drinstehen.

lcd.begin(cols, rows);
Da wird vermutlich für cols und/oder rows was falsches drinstehen.

Klar, er hat ein 16x4, wenn er da ein 20x4 initialisiert, dann hat er in Zeile 3 und 4 die 4 Zeichen Offset.

Hallo
Da ich gerade am Tablet bin kann ich euch den kpl Sketch nicht senden, bei der Überprüfung hat der Compiler aber keinen Fehler gebracht.Übrigens die Zeile mit Row und col habe ich auch ,wie gesagt der Sketch ist aus einem Buch heraus (arduino von Erik Bartmann)!
Falls doch falsch initialisiert wäre ,wie kann ich dann richtig initialisieren ??
Für eure schnelle Hilfe herzlichen Dank

ArduinoWolf:
bei der Überprüfung hat der Compiler aber keinen Fehler gebracht.

Woher soll der Compiler auch wissen, was du für ein Display hast???

Ohne mehr Infos zu deinem Sketch wirst du keine Hilfe mehr bekommen. Wir haben keine Glaskugel.
--->>> Poste deine "Zeile mit Row und col"

markbee:
Ist das LCD denn richtig initialisiert und wie sieht der Rest des Sketches aus?

Hallo ,lieber später als nie , mein Sketch

#include <LiquidCrystal.h>
#define RS 12
#define E 11
#define D4 5
#define D5 4
#define D6 3
#define D7 2
#define COLS 16
#define ROWS 4
LiquidCrystal lcd(RS, E, D4, D5, D6, D7);

void setup(){
  lcd.begin(COLS, ROWS);
  lcd.print("asdffffffffffffg");
  lcd.setCursor(0, 1);
  lcd.print("lpkiuuuuuuuuuuu");
  lcd.setCursor(0, 2);
  lcd.print("lokijuzhgftredsw");
  lcd.setCursor(0, 3);
  lcd.print("sedfjjfjgkgkgkgk");
}

void loop(){}

Das LCD Display ist "direkt" mit einem Arduino Uno verbunden; ohne zusätzliche Hardware , nur ein Widerstand für die Hintergrundbeleuchtung und ein Poti für den Kontrast einstellen . Für Eure schnelle Hilfe möchte ich mich schon jetzt bedanken ; ein super Forum !!!!!

ArduinoWolf:
Das LCD Display ist "direkt" mit einem Arduino Uno verbunden; ohne zusätzliche Hardware

Ganz ohne Drähte zwischen den LCD-Pins und den Arduino-Pins?

Oder wenn doch, vielleicht doch irgendwelche Drähte verdrahtet?

Wo ist z.B. R/W vom LCD am Arduino angeschlossen? An GND?

Irgendwie verrätst Du immer Kleckerkram an Info und schreibst, dass es nicht funktioniert, aber was Du tatsächlich machst, z.B. bei der Verdrahtung, bleibt total Dein eigenes Geheimnis.

Hmm, die init sieht eigentlich gut aus. Ist für ein 16x4

Schau dir doch mal das Beispiel aus dem Tutorial an:

Probier mal den Sketch, und check noch mal ob deine Verdrahtung identisch ist. Der Sketch nimmt auf alle Fälle die selben Arduino Pins, wie du.

Du musst nur folgende Zeile abändern:

lcd.begin(16, 2);
--> lcd.begin(16, 4);

Und du bist sicher, daß du ein 16x4 hast???????

Der Programmcode sieht auf den ersten Blick gut aus. Und da die ersten beiden Zeilen richtig dagestellt werden, scheint auch die Verdrahtung richtig zu sein.
Vielleicht versuchst Du mal ein

lcd.clear();
lcd.setCursor(0,0);

vor die erste lcd.print-Anweisung einzufügen.

Da der Chipsatz kein HD44780 ist, besteht hier auch noch die Möglichkeit der Fehlerursache.

Hallo,

versuch mal jede Zeile vollzuschreiben (also 16 Zeichen in jede Zeile) - mal sehen was passiert.

Gruss,
Jürgen

Gib mal eine Pause von 10 mS nach lcd.begin(COLS, ROWS);.
Der Kontroller auf dem Display braucht etwas Zeit um zu initialisieren. Man könnte das BUSY Flag kontrollieren aber da man sich die R/W Verbindung spart muß man genügend warten.
Grüße Uwe