ssd1306 — OLED-Treiber

Dieses Modul stellt einen Treiber für SSD1306-basierte OLED-Displays bereit. Zwei Übertragungsvarianten werden unterstützt: I2C (SSD1306_I2C) und SPI (SSD1306_SPI). Beide erben die Zeichen-API von SSD1306, die einen framebuf.FrameBuffer1 umschließt.

Beispiel:

from machine import I2C
import ssd1306

i2c = I2C(2)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
oled.fill(0)
oled.text("Hello", 0, 0)
oled.show()

Klassen

class ssd1306.SSD1306(width: int, height: int, external_vcc: bool)

Basisklasse für SSD1306-OLED-Displays. Unterklassen müssen self.framebuf initialisieren und die Methoden write_cmd, write_data, write_framebuf und poweron bereitstellen.

Argumente:

  • width – Displaybreite in Pixeln.

  • height – Displayhöhe in Pixeln (muss ein Vielfaches von 8 sein).

  • external_vccTrue, wenn eine externe VCC-Quelle verwendet wird, False, um die interne Ladungspumpe zu aktivieren.

Instanzattribute:

  • width – Displaybreite in Pixeln.

  • height – Displayhöhe in Pixeln.

  • external_vcc – Flag für externe VCC.

  • pages – Anzahl der 8 Pixel hohen Seiten (height // 8).

init_display() None

Sendet die Initialisierungs-Befehlssequenz an das Display, löscht den Framebuffer und aktualisiert ihn. Wird automatisch von __init__ aufgerufen.

poweroff() None

Schaltet das Display aus (Schlafmodus).

contrast(contrast: int) None

Stellt den Displaykontrast ein.

  • contrast – Kontrastwert im Bereich 0255.

invert(invert: int) None

Invertiert die Displayfarben.

  • invert0 für normale Ausgabe, 1 für invertierte Ausgabe. Nur das niederwertigste Bit wird verwendet.

show() None

Überträgt den internen Framebuffer an das Display.

fill(col: int) None

Füllt den gesamten Framebuffer mit einer einzigen Farbe.

  • col – Farbwert (0 für aus, 1 für an).

pixel(x: int, y: int, col: int) None

Stellt die Farbe eines einzelnen Pixels ein.

  • x – Spaltenkoordinate.

  • y – Zeilenkoordinate.

  • col – Farbwert (0 oder 1).

scroll(dx: int, dy: int) None

Verschiebt den Inhalt des Framebuffers um die angegebenen Offsets. Über die Grenzen hinaus verschobene Pixel gehen verloren; frei gewordene Pixel bleiben unverändert.

  • dx – Horizontale Verschiebung in Pixeln.

  • dy – Vertikale Verschiebung in Pixeln.

text(string: str, x: int, y: int, col: int = 1) None

Zeichnet eine Zeichenkette mit der integrierten 8x8-Schrift.

  • string – Zu zeichnender Text.

  • x – Anfangsspaltenkoordinate.

  • y – Anfangszeilenkoordinate.

  • col – Vordergrundfarbe (Standard 1).

class ssd1306.SSD1306_I2C(width: int, height: int, i2c: machine.I2C, addr: int = 0x3C, external_vcc: bool = False)

I2C-verbundener SSD1306-Treiber. Erbt von SSD1306.

Argumente:

  • width – Displaybreite in Pixeln.

  • height – Displayhöhe in Pixeln.

  • i2c – Ein initialisiertes machine.I2C-Objekt (oder kompatibel).

  • addr – 7-Bit-I2C-Geräteadresse (Standard 0x3C).

  • external_vccTrue für externe VCC, False, um die interne Ladungspumpe zu verwenden.

write_cmd(cmd: int) None

Sendet ein einzelnes Befehls-Byte über I2C an das Display.

write_data(buf: bytes) None

Sendet einen Puffer mit Pixeldaten über I2C an das Display.

class ssd1306.SSD1306_SPI(width: int, height: int, spi: machine.SPI, dc: machine.Pin, res: machine.Pin, cs: machine.Pin, external_vcc: bool = False)

SPI-verbundener SSD1306-Treiber. Erbt von SSD1306. Verwendet eine feste SPI-Taktrate von 10 MHz.

Argumente:

  • width – Displaybreite in Pixeln.

  • height – Displayhöhe in Pixeln.

  • spi – Ein pyb.SPI-Objekt (oder kompatibel).

  • dc – Data/Command-Auswahlpin.

  • res – Reset-Pin.

  • cs – Chip-Select-Pin.

  • external_vccTrue für externe VCC, False, um die interne Ladungspumpe zu verwenden.

write_cmd(cmd: int) None

Sendet ein einzelnes Befehls-Byte über SPI an das Display.

write_framebuf() None

Überträgt den gesamten Framebuffer über SPI an das Display.

poweron() None

Schaltet die Reset-Leitung um, um das Display einzuschalten.

Konstanten

ssd1306.SET_CONTRAST: int

Befehl 0x81 – Displaykontrast einstellen.

ssd1306.SET_ENTIRE_ON: int

Befehl 0xA4 – Display aus dem RAM-Inhalt wiederherstellen.

ssd1306.SET_NORM_INV: int

Befehl 0xA6 – Auswahl normale/invertierte Anzeige.

ssd1306.SET_DISP: int

Befehl 0xAE – Display ein/aus.

ssd1306.SET_MEM_ADDR: int

Befehl 0x20 – Speicheradressierungsmodus.

ssd1306.SET_COL_ADDR: int

Befehl 0x21 – Spaltenadressbereich.

ssd1306.SET_PAGE_ADDR: int

Befehl 0x22 – Seitenadressbereich.

ssd1306.SET_DISP_START_LINE: int

Befehl 0x40 – Display-Startzeile.

ssd1306.SET_SEG_REMAP: int

Befehl 0xA0 – Segment-Remap.

ssd1306.SET_MUX_RATIO: int

Befehl 0xA8 – Multiplex-Verhältnis.

ssd1306.SET_COM_OUT_DIR: int

Befehl 0xC0 – COM-Ausgabe-Scanrichtung.

ssd1306.SET_DISP_OFFSET: int

Befehl 0xD3 – Display-Offset.

ssd1306.SET_COM_PIN_CFG: int

Befehl 0xDA – COM-Pins-Hardwarekonfiguration.

ssd1306.SET_DISP_CLK_DIV: int

Befehl 0xD5 – Display-Taktteilungsverhältnis / Oszillatorfrequenz.

ssd1306.SET_PRECHARGE: int

Befehl 0xD9 – Vorladezeit.

ssd1306.SET_VCOM_DESEL: int

Befehl 0xDB – VCOMH-Deselect-Pegel.

ssd1306.SET_CHARGE_PUMP: int

Befehl 0x8D – Ladungspumpenkonfiguration.