In diesem Beitrag zeige ich dir, wie du im neuen Betriebssystem Raspbian 12 (Bookworm) ein OLED-Display via I2C mit Python 3 programmierst. In meinem früheren Beitrag „OLED Display am Raspberry Pi anschließen und per I2C steuern: So geht’s!„ hatte ich bereits erklärt, wie das mit der Vorgängerversion funktioniert. Doch die Technik hat sich weiterentwickelt, und es gibt einige Änderungen und Optimierungen, die ich in diesem überarbeiteten Leitfaden mit dir teilen möchte. Egal ob du ein Einsteiger bist oder dein Wissen auffrischen willst – hier findest du alle wichtigen Informationen, um dein OLED-Display mit einem Raspberry Pi und Raspbian Bookworm erfolgreich in Betrieb zu nehmen.
Bei der Programmierung des OLED-Displays mit Python 3 am Raspberry Pi gibt es im Umgang mit dem LUMA-Modul keine grundlegenden Änderungen. Auch unter Raspbian 12 (Bookworm) wird dieses Modul verwendet. Allerdings unterscheidet sich der Installationsprozess leicht. In meinem Fall war Python 3 bereits vorinstalliert, sodass ich nur das Modul LUMA mit dem folgenden Befehl nachinstallieren musste:
sudo apt install python3-luma.oled
Das Modul LUMA bietet eine umfassende Unterstützung für die Programmierung der gängigsten OLED-Displays. Dazu gehören unter anderem Modelle wie SSD1306, SSD1309, SSD1322, SSD1325, SSD1327, SSD1331, SSD1351, SSD1362, SH1106, WS0010 und WEH001602. Mit diesen Treibern deckt das Modul eine breite Palette von Displays ab, die häufig in Projekten mit dem Raspberry Pi zum Einsatz kommen.
Beispiel – „Hello World!“ auf einem SH1106 OLED-Display
Mit nachfolgendem Code zeigst du den Text „Hello World!“ auf dem 1,3″ OLED-Display für 5 Sekunden an. Das Display wird via I2C & SH1106 Treiberchip angesprochen.
import time from luma.core.interface.serial import i2c, spi, pcf8574 from luma.core.interface.parallel import bitbang_6800 from luma.core.render import canvas from luma.oled.device import sh1106 from PIL import ImageFont serial = i2c(port=1, address=0x3C) device = sh1106(serial) font = ImageFont.truetype('FreeSans.ttf', 14) with canvas(device) as draw: draw.rectangle(device.bounding_box, outline="white", fill="black") draw.text((25, 25), "Hello World!", font=font, fill="white") time.sleep(5)