Python, Rasbperry Pi und LCD 2004 mit PCF8574 I2C und Umlaute

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Snakepit
User
Beiträge: 12
Registriert: Samstag 12. Juli 2014, 20:08

Danke an alle Ideengeber!

Translate war die richtige Idee und zusammen mit 3 Seiten konnte ich dann meinen Code so anpassen, dass dieser jetzt auch Sinn auf dem Display gibt.

Code: Alles auswählen

.
# Benötigte Zeichen in der JSON Ausgabe / hier können noch weitere Zeichen hinzugefügt werden: ÖÄÜ usw. Wird aber bei mir nicht benötigt
umlaute = {228: chr(225), 246: chr(239), 252: chr(245), 223: chr(226)}
.
.
# Ausgabe am Display mit Änderung der Umlaute durch "translate"
display.lcd_display_string("Richtung: " + (windrichtung.translate(umlaute)),  2)
Evtl. kann es ja jemand anderes auch einmal brauchen.
Snakepit
User
Beiträge: 12
Registriert: Samstag 12. Juli 2014, 20:08

sparrow hat geschrieben: Mittwoch 24. Februar 2021, 13:54 @snakepit: Woran hapert es denn noch? Das sollte doch gehen:

Code: Alles auswählen

import drivers

# Translation HD44780A00
# https://de.wikipedia.org/wiki/HD44780#/media/Datei:Charset.gif
TRANSLATION_TABLE = str.maketrans(
    {
    "Ä": int("11100001", 2),
    "ä": int("11100001", 2),
    "Ü": int("11110101", 2),
    "ü": int("11110101", 2),
    "Ö": int("11101111", 2),
    "ö": int("11101111", 2),
    "°": int("11011111", 2),
    "ß": int("11100010", 2),
    }
)


Die Bytewerte kommen aus der HD44780A00 Codepage bei [url="https://de.wikipedia.org/wiki/HD44780"]Wikipedia[/url].
[/quote]

So hatte ich es auch erst probiert, die Umlaute muss ich aber seltsamerweise als ascii übergeben und in Char dann wandeln. Nur so wird es richtig umgewandelt und auch dargestellt.
Benutzeravatar
sparrow
User
Beiträge: 4184
Registriert: Freitag 17. April 2009, 10:28

@Snakepit: Bist du sicher, dass du es genau so probiert hast? Denn für das Umwandeln der Keys (in diesem Beispiel die Umlaute) ist "maketrans" da. Das ist kein "einfaches" dict, sondern eben die Rückgabe von str.maketrans().
Antworten