Hallo und willkommen zu unserem heutigen Blog Artikel.
Vor einigen Tagen haben wir Ihnen in einem Beitrag gezeigt, wie Sie selbsterstellte Zeichen wie z.B. Umlaute auf einem 1602 oder 2004 LC Display ausgeben können.
Die dort veröffentlichte Zeichentabelle beinhaltet jedoch bereits die Zeichen für "äöüß°µ" und "Ω". Für viele Anwendungen würden diese schon reichen.
Da sich die Tabelle jedoch nicht an den UTF-8 Standard hält, können diese Zeichen nicht ohne weiteres ausgegeben werden.
Über eine sogenannte Escape-Sequenz können wir jedoch den Chip direkt anweisen ein bestimmtes Zeichen auszugeben.
Eine Escape-Sequenz ist eine Zeichenkombination in der technischen Informatik, die keinen Text repräsentiert, sondern vom Gerät abgefangen wird und eine Sonderfunktion ausführt.
Typischerweise fängt diese mit einem Backslash "\" an, gefolgt von einer zahl.
Damit können die anfangs erwähnten Zeichen wie folgt ausgegeben werden:
lcd.print("\xE1"); // gibt ein ä aus lcd.print("\xEF"); // gibt ein ö aus lcd.print("\xF5"); // gibt ein ü aus lcd.print("\xE2"); // gibt ein ß aus lcd.print("\xDF"); // gibt ein ° aus lcd.print("\xE4"); // gibt ein µ aus lcd.print("\xF4"); // gibt ein Ω aus
Um einen Escape-Sequenz zu beenden, können Sie einen weiterne Backslash am Ende einfügen. Um zum Beispiel die Ausgabe "Küche: 23 °C" auf dem Display auszugeben, können Sie folgende Schreibweise verwenden:
lcd.print("K\xF5\che: 23 \xDF\C");
Wir hoffen, dass unsere Tipps zur korrekten Darstellung von Sonderzeichen und Umlauten auf LC Displays sich bei Ihren Projekten als nützlich erweisen, und freuen uns auf Ihr Feedback.
Ich wünsche Ihnen viel Erfolg bei Ihren Projekten, und verabschiede mich bis zum nächsten Beitrag.
Ihr Markus Neumann
5 Kommentare
DeitaGER
Der Blog ist sehr hilfreich aber beim “%” – Zeichen (ASCII dez: 37 / hex: 25) → “\x25” → “\0×25”) bin ich damit gescheitert. Der Versuch eines Temp/Humi – Messers mit dem DHT11 und der LED Matrix MAX72xx erweist sich doch etwas schwieriger.
Das “%” wird als Steuerzeichen gewertet und die IDE weiß nicht, dass es zur Anzeige kommen soll.
Wilhelm Weniger
Ich wollte nur statt “Hello word” den Text “Grüezi” am LCD ausgeben.
Das konnte ich dann wie folgt lösen:
#include
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
char Replace1 = 0xE1; //ä
char Replace2 = 0xEF; //ö
char Replace3 = 0xF5; //ü
String Hello = “Grüezi”;
void setup() {
lcd.begin(16, 2);
Hello.replace(“ä”,String(Replace1));
Hello.replace(“ö”,String(Replace2));
Hello.replace(“ü”,String(Replace3));
lcd.print(Meldung);
}
void loop() {
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
}
dieter gutmann
Ich verwende einen 1,3" OLED I²C Display
Arduino 2.0.1
und ESP32 Dev Module
In Windows10 gibt es unter Windows-Zubehör eine Zeichentabelle.
Wenn man mit der Maus auf ein Zeichen zeigt bekommt man den zughörigen HEX-Wert angezeigt.
Werner
Falls es jemanden interessiert: Ich habe mich daran gesetzt und die LCD Library so geändert, dass man nun im Fließtext wie gewohnt Umlaute verwenden kann. Also ein einfaches lcd.print(“Grüße aus Österreich”); ist möglich. Der Library findest du hier zum Download: https://werner.rothschopf.net/202003_arduino_liquid_crystal_umlaute.htm
Malke
Guten Abend,
der Hinweis hat mich weitergebracht. Deshalb ein herzliches Dankeschön !!!
Nun fehlt mir nur noch der Code für das große !Ü!
Gruss
Dietmar Malke