Aus Raspberry Pi Geek 11/2024

MicroPython Teil 5: Displays unter MicroPython ansteuern (Seite 2)

OLED-Display

Zum Ansteuern des OLED-Displays dient die Bibliothek SSD1306_I2C. Sie basiert auf der in MicroPython integrierten Klasse framebuf (Frame Buffer [10]). Das bedeutet, dass Sie nach dem Erzeugen eines Objekts der Klasse SSD1306_I2C alle Methoden von framebuf verwenden können. Sobald Sie im Speicher des Controllers den kompletten Bildschirminhalt aufgebaut haben, übertragen Sie ihn mit der Methode show() auf das Display.

Die Tabelle “framebuf-Methoden” bietet eine Übersicht aller zur Verfügung stehenden Methoden. Das Testprogramm aus Listing 3 importiert zuerst die nötigen Bibliotheken. Anschließend legt es die I2C-Schnittstelle fest, an der das Display hängt, und erzeugt das passende SSD1306_I2C-Objekt oled. Mit ihm können Sie jetzt wie mit einem framebuf arbeiten.

Sind alle Änderungen am framebuf abgeschlossen, schickt der Befehl show() den Pufferinhalt an das Display. Das Vorgehen erweist sich als sehr effizient, weil sich der Buffer in einem Stück übertragen lässt. Das erspart, jede Änderung einzeln im Speicher des Displays vornehmen zu müssen.

Methode

Beschreibung

fill(color)

Füllt den kompletten Buffer mit einer Farbe.

pixel(x, y[, color])

Zeichnet ein einzelnes Pixel, die Farbe ist optional.

hline(x, y, w, color)

Zeichnet eine horizontale Linie.

vline(x, y, h, color)

Zeichnet eine vertikale Linie.

line(x1, y1, x2, y2, color)

Zeichnet eine Linie.

rect(x, y, w, h, color[, fill])

Zeichnet ein Rechteck.

ellipse(x, y, xr, yr, color[, fill, m])

Zeichnet eine Ellipse.

poly(x, y, coords, color[, fill])

Zeichnet ein Polygon.

text(s, x, y[, color])

Positioniert einen Text an den Koordinaten x, y.

scroll(xstep, ystep)

Bewegt den Inhalt des Buffers.

blit(fbuf, x, y, key=-1, palette=None)

Positioniert einen Buffer innerhalb eines bestehenden Buffers.

Listing 3

OLED-Displays testen

import machine
from ssd1306 import SSD1306_I2C
i2c = machine.I2C(0,sda=machine.Pin(12), scl=machine.Pin(13))
#print(i2c.scan())
oled = SSD1306_I2C(128, 32, i2c)
oled.text('Hello', 0, 0)
oled.text('World', 0, 10)
oled.show()

TFT-Display

Das TFT-Display hängt an der SPI-Schnittstelle des Controllers. Die zugehörige Bibliothek haben Sie bereits mit den Kommandos aus Listing 2 installiert. Im Git-Repository der Bibliothek gibt es zusätzlich ein Beispielprogramm [11], mit dem Sie das Display testen können. Sie müssen lediglich die Zeile, die die SPI-Schnittstelle initialisiert, so anpassen, dass sie zur Pinbelegung des Arduino Nano RP2040 Connect passt (Listing 4).

Listing 4

SPI-Schnittstelle initialisieren

spi = SPI(0, baudrate=20000000, polarity=0, phase=0, sck=Pin(6), mosi=Pin(7), miso=Pin(4))

Danach starten Sie das Testprogramm und sehen eine Demo, die Ihnen zeigt, über welche Funktionen das Display verfügt (Abbildung 4). Mithilfe des Democodes arbeiten Sie sich mit wenig Aufwand in die Funktionsweise der Bibliothek ein.

Abbildung 4: Der Democode auf dem TFT-Display zeigt, was es alles kann.

Abbildung 4: Der Democode auf dem TFT-Display zeigt, was es alles kann.

Fazit

Mit der passenden Bibliothek steuern Sie ohne Probleme ein Display per MicroPython an. Displays stellen eine echte Bereicherung für jedes Mikrocontrollerprojekt dar. In unserem Beispiel beschränkt sich die Ausgabe nicht allein auf Text, auch farbige Grafiken wie in Abbildung 4 sind möglich.

Der Arduino Nano RP2040 Connect eignet sich in Verbindung mit dem Arduino Lab bestens für den Einsatz von MicroPython. Schade nur, dass die Arduino-Software nur so wenige Boards unterstützt. Das Nano-RP2040-Connect-Board lässt sich durch die integrierten Sensoren für viele interessante Projekte direkt nutzen. (csi)

Infos

  1. Arduino Board Nano RP2040 Connect bestellen: https://www.amazon.de/dp/B095J4KFVT
  2. I2C-OLED-Display bestellen: https://www.az-delivery.de/products/0-96zolldisplay
  3. SPI-TFT-Display bestellen: https://www.az-delivery.de/products/1-8-zoll-spi-tft-display
  4. Homepage Arduino Nano Connect: https://docs.arduino.cc/hardware/nano-rp2040-connect/
  5. Arduino Labs herunterladen: https://labs.arduino.cc/en/labs/micropython
  6. MicroPython-Installer herunterladen: https://github.com/arduino/lab-micropython-installer/releases/tag/v1.3.1
  7. Arduino-MicroPython-Projekt: https://docs.arduino.cc/micropython/
  8. Installationsanleitung: https://docs.arduino.cc/micropython/basics/board-installation/
  9. MicroPython (Teil 4): Martin Mohr, “Hallo, hallo!”, RPG 09/2024, S. 14, https://www.raspi-geek.de/50718
  10. framebuf in MicroPython: https://docs.micropython.org/en/latest/library/framebuf.html
  11. Beispielprogramm zu MicroPython-ST7735: https://github.com/boochow/MicroPython-ST7735/blob/master/graphicstest.py
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben