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 |
|---|---|
|
|
Füllt den kompletten Buffer mit einer Farbe. |
|
|
Zeichnet ein einzelnes Pixel, die Farbe ist optional. |
|
|
Zeichnet eine horizontale Linie. |
|
|
Zeichnet eine vertikale Linie. |
|
|
Zeichnet eine Linie. |
|
|
Zeichnet ein Rechteck. |
|
|
Zeichnet eine Ellipse. |
|
|
Zeichnet ein Polygon. |
|
|
Positioniert einen Text an den Koordinaten x, y. |
|
|
Bewegt den Inhalt des Buffers. |
|
|
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.
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
- Arduino Board Nano RP2040 Connect bestellen: https://www.amazon.de/dp/B095J4KFVT
- I2C-OLED-Display bestellen: https://www.az-delivery.de/products/0-96zolldisplay
- SPI-TFT-Display bestellen: https://www.az-delivery.de/products/1-8-zoll-spi-tft-display
- Homepage Arduino Nano Connect: https://docs.arduino.cc/hardware/nano-rp2040-connect/
- Arduino Labs herunterladen: https://labs.arduino.cc/en/labs/micropython
- MicroPython-Installer herunterladen: https://github.com/arduino/lab-micropython-installer/releases/tag/v1.3.1
- Arduino-MicroPython-Projekt: https://docs.arduino.cc/micropython/
- Installationsanleitung: https://docs.arduino.cc/micropython/basics/board-installation/
- MicroPython (Teil 4): Martin Mohr, “Hallo, hallo!”, RPG 09/2024, S. 14, https://www.raspi-geek.de/50718
framebufin MicroPython: https://docs.micropython.org/en/latest/library/framebuf.html- Beispielprogramm zu MicroPython-ST7735: https://github.com/boochow/MicroPython-ST7735/blob/master/graphicstest.py






