25a. Lektion: Fonts

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche


maysrp /ssd1306_font

Quelle: https://github.com/maysrp/ssd1306_font

Diese Lösung erscheint auf den ersten Blick interessant. Leider funktioniert sie bei meinem ersten Test nicht.

Problem

in font.py werden die Files ASC16 ... 32 geöffnet (mit open). Sie werden aber nicht wieder geschlossen.
Ob das der Grund der Fehlermeldung ist weiß ich nicht. Es gibt jedenfalls eine Fehlermeldung, die ich nicht beseitigen kann. Deshalb scheidet diese Lösung aus.


magnums /MicroPython-Oled-ssd1306-largeFont

Quelle: https://github.com/magnums/MicroPython-Oled-ssd1306-largeFont

Diese Lösung funktioniert.

Allerdings ist eine Anpassung für das Demoboard erforderlich.

Anpassung für das Demoboard:

In main.py muss von SoftI2C auf I2C umgestellt werden. Dazu sind die beiden folgenden Zeilen so umzuändern, wie hier dargestellt:
Zeile 3:

from machine import Pin, I2C

Zeile 13:

i2c = I2C(0, scl=Pin(21), sda=Pin(20))

In Thonny erscheint die folgende Ausgabe wenn main.py ausgeführt wird:

>>> %Run -c $EDITOR_CONTENT

    MPY: soft reboot
    Orientation: horiz Reversal: False
>>> 

Die Zeile: Orientation: horiz Reversal: False wird in writer.py erzeugt. Ihre Ausgabe wird verhindert, wenn in Zeile 19

    def __init__(self, device, font, verbose=False):

verbose auf False gesetzt wird, wie oben dargestellt.

Nachteil

Es wird nur ein Font mitgeliefert.


nickpmulder /ssd1306big

Quelle: https://github.com/nickpmulder/ssd1306big

Hierbei handelt es sich um eine Erweiterung von ssd1306.py.
Die Buchstaben werden hier mit Grafikbefehlen gezeichnet. Deshalb scheidet diese Lösung für mich aus.


mark-gladding /packed-font

Quelle: https://github.com/mark-gladding/packed-font

peterhinch /micropython-font-to-py

Quelle: https://github.com/peterhinch/micropython-font-to-py

Peter Hinsch hat eine Klasse Writer geschrieben, die es ermöglicht andere als den Standardfont in den Frambuffer zu schreiben.Dazu wird für jeden benötigten Font eine eigene Instanz der Klasse Writer geschrieben. Über diese kann dann Text in dem entsprechenden Font erstellt werden.

Voraussetzung für den Einsatz der Klasse Writer ist, das der Displaytreiber die Klasse Framebuffer erbt.

Peter hat noch eine weitere Datei hinzugefügt: ssd1306_setup.py. Diese Datei stellt die Funktion setup() bereit. In dieser ist das Einrichten der Schnittstelle (I2C oder SPI) und die Erstellung der Displayinstanz (hier ssd) zusammengefasst. Hier müssen die entsprechenden Pins eingetragen und die Parameter der Aufrufe dem verwendeten Microcontroller entsprechend angepasst werden. Die Originaldatei ist für das Pyboard geschrieben.

Bei der Auswahl der Schnittstellen kann man zwischen einer Hardwareschnittstelle und einer Software Inplementierung wählen. Peter schreibt, das die I2C-Hardware nicht funktioniert. Das beruht auf einem Fehler in der ssd1306_setup.py. Dazu gleich mehr.