Texte mit unterschiedlichen Fonts darstellen: Unterschied zwischen den Versionen
Peter (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Peter (Diskussion | Beiträge) |
||
Zeile 71: | Zeile 71: | ||
== Das Modulpaket '''micropython-oled''' == | == Das Modulpaket '''micropython-oled''' == | ||
Nun mal sehen wie das Modul angewende wird: | |||
from machine import Pin, I2C | |||
from oled import Write, GFX, SSD1306_I2C | |||
from oled.fonts import ubuntu_mono_15, ubuntu_mono_20 | |||
Zuerst die Importe. Aus oled werden Write, GFX und SSD1306_I2C importiert. Die beiden ersten sind neu. | |||
scl = Pin(17) | |||
sda = Pin(16) | |||
i2c = I2C(0, scl=scl, sda=sda) | |||
Nun wird eine Instanz der I2C-Schnittstelle erzeugt. | |||
oled = SSD1306_I2C(128, 64, i2c) | |||
Mit oled entsteht eine Instanz des Displays. Das ist wie beim einfachen SSD1306 Modul. | |||
gfx = GFX(128, 64, oled.pixel) | |||
Die Instanz gfx ist neu. Sie dürfte für die Grafik zuständig sein. | |||
write15 = Write(oled, ubuntu_mono_15) | |||
write20 = Write(oled, ubuntu_mono_20) | |||
write15.text("Espresso IDE", 0, 0) | |||
write15.text("micropython-oled", 0, 15) | |||
gfx.line(0, 32, 127, 32, 1) | |||
gfx.line(0, 33, 127, 33, 1) | |||
write20.text("1234567890", 0, 35) | |||
write15.text("Ubuntu Mono font", 0, 52) | |||
oled.show() | |||
Zeile 135: | Zeile 169: | ||
[[file:mipy_0005.jpg|300px]] | [[file:mipy_0005.jpg|300px]] | ||
== Die enthaltenen Fonts == | == Die enthaltenen Fonts == |
Version vom 16. März 2023, 23:01 Uhr
Ich habe im Internet die folgenden Links zum obigen Thema gefunden:
[[1]] [[2]] [[3]] [[4]] [[5]] [[6]] [[7]] [[8]]
Grundsätzlich handelt es sich wohl um das Modulpaket micropython-oled mit dem verschiedene Fonts auf dem Oled-Display dargestellt werden können.
Erster Versuch mit micropython-oled
Bei der Espresso-IDE handelt es sich wohl um eine IDE, die über Websockets mit dem ESP32 kommuniziert. Das ist aber letztlich egal, weil ich ohnehin Thonny benutze. Mir geht es hier nur um die Beispiele. Da gab es einige Fehlermeldungen aud dem Raspberry Pi Pico, die aber in der Hardware begründet waren. So mus beim Raspi Pico noch die ID der I2C-Hardware angegeben werden, weil dieser 2 davon hat. Außerdem musste die Zeile 'Pin(16, Pin.OUT, value=1)' gelöscht werden. Deren Sinn erschließt sich mir nicht. Beim Raspi Pico liegt auf Pin 16 sda, so dass es nur Probleme geben kann. Hier der erste Versuch:
example1.py - Original
>>> from machine import Pin, I2C >>> from oled import Write, GFX, SSD1306_I2C >>> from oled.fonts import ubuntu_mono_15, ubuntu_mono_20 >>> scl = Pin(17) sda = Pin(16) >>> i2c = I2C(scl=scl, sda=sda) Pin(16, Pin.OUT, value=1) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'id' argument required >>> i2c = I2C(0, scl=scl, sda=sda) Pin(16, Pin.OUT, value=1) Pin(16, mode=OUT) >>> oled = SSD1306_I2C(128, 64, i2c) gfx = GFX(128, 64, oled.pixel)
Hier hängt sich die REPL auf.
Nun das korregierte sample1.py:
from machine import Pin, I2C from oled import Write, GFX, SSD1306_I2C from oled.fonts import ubuntu_mono_15, ubuntu_mono_20 scl = Pin(17) sda = Pin(16) i2c = I2C(0, scl=scl, sda=sda) oled = SSD1306_I2C(128, 64, i2c) gfx = GFX(128, 64, oled.pixel) write15 = Write(oled, ubuntu_mono_15) write20 = Write(oled, ubuntu_mono_20) write15.text("Espresso IDE", 0, 0) write15.text("micropython-oled", 0, 15) gfx.line(0, 32, 127, 32, 1) gfx.line(0, 33, 127, 33, 1) write20.text("1234567890", 0, 35) write15.text("Ubuntu Mono font", 0, 52) oled.show()
Hurra, es spielt. Nun will ich mir ansehen was dieses Modul zu bieten hat.
Das Modulpaket micropython-oled
Nun mal sehen wie das Modul angewende wird:
from machine import Pin, I2C from oled import Write, GFX, SSD1306_I2C from oled.fonts import ubuntu_mono_15, ubuntu_mono_20
Zuerst die Importe. Aus oled werden Write, GFX und SSD1306_I2C importiert. Die beiden ersten sind neu.
scl = Pin(17) sda = Pin(16) i2c = I2C(0, scl=scl, sda=sda)
Nun wird eine Instanz der I2C-Schnittstelle erzeugt.
oled = SSD1306_I2C(128, 64, i2c)
Mit oled entsteht eine Instanz des Displays. Das ist wie beim einfachen SSD1306 Modul.
gfx = GFX(128, 64, oled.pixel)
Die Instanz gfx ist neu. Sie dürfte für die Grafik zuständig sein.
write15 = Write(oled, ubuntu_mono_15) write20 = Write(oled, ubuntu_mono_20)
write15.text("Espresso IDE", 0, 0) write15.text("micropython-oled", 0, 15)
gfx.line(0, 32, 127, 32, 1) gfx.line(0, 33, 127, 33, 1)
write20.text("1234567890", 0, 35) write15.text("Ubuntu Mono font", 0, 52)
oled.show()
>>> dir(Write) ['__class__', '__init__', '__module__', '__name__', '__qualname__', '__bases__', '__dict__', 'text', 'char'] >>> dir(GFX) ['__class__', '__init__', '__module__', '__name__', '__qualname__', '__bases__', '__dict__', 'fill_rect', 'line', 'rect', '_slow_hline', '_slow_vline', 'circle', 'fill_circle', 'triangle', 'fill_triangle'] >>> dir(SSD1306_I2C) ['__class__', '__init__', '__module__', '__name__', '__qualname__', '__bases__', '__dict__', 'fill', 'invert', 'pixel', 'scroll', 'text', 'show', 'poweron', 'init_display', 'write_cmd', 'poweroff', 'contrast', 'write_framebuf']
>>> oled.fill(0) >>>
oled.fill(0) funktioniert nicht.
>>> gfx.fill_rect(0,0,127,63, 0) >>>
... auch nicht. Vielleicht liegt es an der REPL?
Nee lag an mir:
>>> %Run -c $EDITOR_CONTENT >>> oled.fill(0) >>> oled.show() >>>
tut was es soll. Display komplett schwarz.
Hier ein weiterer Versuch:
>>> oled.fill(0) >>> oled.show() >>> write20.text('12.236 Volt', 0, 0) >>> oled.show() >>> write20.text('1025 mA', 0, 20) >>> oled.show() >>> write20.text(12.236 * 1025 / 10000, ' Watt' , 0, 40) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/lib/oled/write.py", line 54, in text TypeError: 'float' object isn't iterable >>> watt = 12.236 * 1025 / 10000 >>> write20.text(watt, ' Watt' , 0, 40) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/lib/oled/write.py", line 54, in text TypeError: 'float' object isn't iterable >>> write20.text(watt, + ' Watt' , 0, 40) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported type for __pos__: 'str' >>> write20.text(str(watt) + ' Watt' , 0, 40) >>> oled.show() >>> oled.fill(0) >>> oled.show() >>> write20.text(str(12.236 * 1025 / 10000) + ' Watt' , 0, 40) >>> oled.show() >>> oled.fill(0) >>> oled.show() >>> write20.text('%.3f Watt'%(12.236 * 1025 / 10000), 0, 40) >>> oled.show() >>>
Die enthaltenen Fonts
Hier die Liste der enthaltenen Fonts: