Waagerechte Striche im LCD Display

Hallo liebes Forum!
Ich habe seit gestern ein seltsames Phänomen auf einem LCD Display. Vorher funktionierte alles einwandfrei.
Und nein, es sind nicht die üblichen waagerechten Balken, wenn das LCD nicht angesprochen wird, sondern was ganz anderes.
Ich hatte erst gedacht ich hätte einen Fehler in meinem Programm und hab alles mögliche ausprobiert, bis ich mal auf die Glorreiche Idee gekommen bin einfach mal nur Variablen schreiben zu lassen udn siehe da...wohl doch nicht das Programm.

Meine Frage:
Kennt jemand so etwas und woran könnte es liegen?

byte x = 1;

byte y = 22;

int z = 333;

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x23, 20, 4);

void setup() {

Serial.begin(9600);

Serial.println("Serial Start");

//LCD

lcd.init();

lcd.backlight();

lcd.setCursor(0, 0);

lcd.println(x);

lcd.setCursor(0, 1);

lcd.println(y);

lcd.setCursor(0, 2);

lcd.println(z);

}

void loop() {

}

Da ich leider nicht weiß, wie man hier eine Blid einfügt, versuche ich es mal per Link.
Link zum Bild,

Vielen Dank im Voraus!

Tiff

Hallo Tiff

Tausche alle

lcd.println

gegen

lcd.print

aus.

Das funktioniert!
ist

lcd.println

denn falsch?

lcd.println

sendet Steuerzeichen, CR und LF, die nicht vom LCD ausgewertet, aber als waagerechte Striche dargestellt werden.

Dankesehr!
Da wäre ich nie drauf gekommen.

Komischen Zeichen die man an andere Stellen verschieben kann, deuten IMMER auf "illegale" Zeichen hin, die der Controller nicht verarbeiten kann.

Sehr bekannt sind die deutschen Sonderzeichen.

Gruß

Pucki

Und was bitte hat das zu sagen im dem Fall?
Es war fehlerhafte Programmierung.

Deutsche Sonderzeichen sind kein Problem für ein LCD mit PCF8574 und nicht nur, es gibt sogar eine Lib mit der kann man direkt Deutsch schreiben.

Die LCDs können das erst mal nicht. Die LIB legt dann benutzerdef. Zeichen im LCD Controler an, damit es geht.

Also HD44780U LCD welche häufig als 16x2 oder 20x4 verkauft werden haben Umlaute in Ihrer Zeichentabelle. Da ist selbst definieren nicht unbedingt notwendig.

EBEN.

Also meine HD44780 ohne den U am Ende erkennen ein ü + ä definitiv nicht.

Selbe bei meinen TFT musste ich im Zeichensatz das ä + ü nachmalen.

Und das mit der " automatisch installierten Libs der IDE".

Gruß

Pucki

Das ä ist definitiv vorhanden. Das Ü ist aber ein großes "Ü"... das stimmt wohl...

Da kannst Du auch selber in das Datenblatt schauen.
Und jetzt komm mir nicht mit HD44780 mit oder ohne U in der Bezeichnung, nur weil bei den Händlern das U nicht in der Beschreibung mit aufgeführt ist. Du wirst schwerlich etwas anderes bekommen als eines mit "U".

Verrate mir woher du weist das du einen, HD44780U oder S hasst wen ich dir ein 1602 oder 2004 auf den Tisch werfe.
Das U am Ende hat nix mit Zeichensatz zu tun, noch was nur HD44780 ohne Zusatzbuchstabe gibt's nicht.

Ich habe gedacht das es Unterschiedlich Typen sind, wegen den U.

Es gibt zu den Thema bereits ein Thread. Der TO dort hatte auch seine Probleme mit den Sonderzeichen.

Und irgendwie sind die Identisch mit meinen.

Achja. Ich habe das Problem im Griff.
Ich habe das Display gegen ein TFT getauscht und in den Zeichensatz die passenden Zeichen nachgemalt. :wink:

Gruß

Pucki

Das möchte ich nicht sehen :rofl:
Eigentlich gibt's Möglichkeit für jede Lib eigenen Zeichensatz konvertieren. Aus Bequemlichkeit mache das nur für TFT_eSPI. Kostet mich genau eine Minute, die suche nach Passendem Zeichensatz nimmt mehr zeit weg :wink:

Du hast ein schlechtes Gedächnis :wink:

Ich habe in einen anderen Thread mal eine Seite bei Github gepostet, wo man Zeichen malen kann, in den man in eine Matrix jede Menge schwarze Felder macht.

Und genau damit habe ich die Adafruit-Font nachgemalt.

Gruß

Pucki

Das stimmt nur für den europäischen Datensatz. Die Zeichen über 127 sind Sonderzeichen von verschiedenen Europäischen Sprachen.

laut Datenblatt: https://www.sparkfun.com/datasheets/LCD/HD44780.pdf

" Ordering Information:

Type No. Package CGROM
HD44780UA00FS FP-80B Japanese standard font
HCD44780UA00 Chip
HD44780UA00TF TFP-80F
HD44780UA02FS FP-80B European standard font
HCD44780UA02 Chip
HD44780UA02TF TFP-80F
HD44780UBxxFS FP-80B Custom font
HCD44780UBxx Chip
HD44780UBxxTF TFP-80F

Note: xx: ROM code No."

Also ist der Zeichensatz nicht mit dem U decodiert sondern mit der Zweistelligen Nummer :
00 Japanisch
02 Europa
alle anderen Zahlen Kundenspezifisch.
Frag nicht mich wieviele Stück man abnehmen muß um einen persönlichen Zeichensatz zu bekommen.

Grüße Uwe

"deutschen Sonderzeichen" am LCD bedeuten ein paar Herausforderungen

  • zunächst braucht es einen LCD mit einem Character ROM das die gewünschten Sonderzeichen enthält. Stellt diese das LCD ROM nicht zur Verfügung könnte man bis zu 8 als Custom Characters erstellen
  • äöüß... sind in UTF-8 als 2 Byte (oder mehr) codiert. Daher bedarf es bei der Ausgabe auf das LCD über das Arduino Print.h Interface ein wenig code damit die bytes eines UTF-8 Characters auch nur ein Zeichen - von der richtigen ROM Adresse - aus dem Character ROM des LCD ausgibt.

Etwas Werbung: meine LCD Library kann deutsche Sonderzeichen - aber auch andere Sonderzeichen - im Fließtext ausgeben:

https://werner.rothschopf.net/202009_arduino_liquid_crystal_intro.htm

Kann ich bestätigen, seine Lib funzt prima, selbst schwedische Umlaute gehen mit der Erweiterung.

Vor längerem habe ich damit mal herumgespielt und auch mit der utf-8 "Problematik" herumprobiert: