Allerdings ist bei dem Display das "ü" nicht wie in der Standard-ASCII-Tabelle bei 0x81 sondern bei 0xf5.
Der ASCII-Standard definiert nur einen 7-Bit Zeichensatz , also bis Code 127, alles darüber hinaus ist spezifisch.
Und Java(Arduino) verwendet standardmäßig UTF-8, das ist ein Zeichensatz mit 1-Byte und Mehrbyte-Zeichen im selben Zeichensatz: Die Standard-ASCII Zeichen sind 1 Byte und äöüß bei UTF-8 sind 2 Bytes.
Kann man das irgendwie in einen Zeile packen?
Man kann sich z.B. eine Funktion machen, die Strings zeichenzweise ausgibt, und falls UTF-8 Zeichen vorkommen eine Übersetzung durchführen und die entsprechenden Zeichen aus dem HD44780-Controllerzeichensatz ausgeben lassen.
Zumindest mit einer standardmäßigen Windows7-Java-Arduino Installation und auf einem HD44780 Controller mit A00 Zeichensatz funktioniert beispielsweise das:
void lcdPrint(char* buf)
// for HD44780 controller with ROM character set A00
{
for(byte i=0;i<strlen(buf);i++)
{
switch (buf[i])
{
case 0xC2:
case 0xC3:
case 0xCE:
case 0xCF: break; // filtering UTF-8 highbyte
case 'ä': lcd.print('\xE1');break; // translate UTF-8 lowbyte
case 'ö': lcd.print('\xEF');break; // translate UTF-8 lowbyte
case 'ü': lcd.print('\xF5');break; // translate UTF-8 lowbyte
case 'α': lcd.print('\xE0');break; // alpha
case 'ß': lcd.print('\xE2');break; // beta, sz
case 'µ': lcd.print('\xE4');break; // micro
case '°': lcd.print('\xDF');break; // degree symbol
case 'Ω': lcd.print('\xF4');break; // omega
case 'σ': lcd.print('\xE5');break; // sigma
case 'Σ': lcd.print('\xF6');break; // Sigma
default: lcd.print(buf[i]);
}
}
}
// Beispielaufruf:
lcdPrint("aäoöuüαßµΩ°σΣ");
Dann rufst Du für die Ausgabe von C-Strings in char-Arrays einfach statt "lcd.print" nur die Funktion "lcdPrint" auf, und die Umsetzung passiert automatisch. Und zwar nicht nur für Umlaute (sind glaube ich nur Kleinbuchstaben enthalten), sondern auch noch für ein paar andere Sonderzeichen wie ein paar wenige griechische Buchstaben (das ß ist quasi wie beta) und das "Grad" Zeichen für die Ausgabe von Temperaturen.