ssd1306 — OLED-stuurprogramma

Deze module biedt een stuurprogramma voor OLED-displays op basis van de SSD1306. Er worden twee transportvarianten ondersteund: I2C (SSD1306_I2C) en SPI (SSD1306_SPI). Beide erven de teken-API van SSD1306, die een framebuf.FrameBuffer1 omhult.

Voorbeeld:

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 voor SSD1306 OLED-displays. Subklassen moeten self.framebuf initialiseren en de methoden write_cmd, write_data, write_framebuf en poweron aanbieden.

Argumenten:

  • width – Displaybreedte in pixels.

  • height – Displayhoogte in pixels (moet een veelvoud van 8 zijn).

  • external_vccTrue als er een externe VCC-bron wordt gebruikt, False om de interne charge pump in te schakelen.

Instantie-attributen:

  • width – Displaybreedte in pixels.

  • height – Displayhoogte in pixels.

  • external_vcc – Externe VCC-vlag.

  • pages – Aantal pagina’s van 8 pixels hoog (height // 8).

init_display() None

Stuur de initialisatiecommandosequentie naar het display, wis de framebuffer en ververs. Wordt automatisch aangeroepen door __init__.

poweroff() None

Schakel het display uit (slaapstand).

contrast(contrast: int) None

Stel het displaycontrast in.

  • contrast – Contrastwaarde in het bereik 0255.

invert(invert: int) None

Inverteer de displaykleuren.

  • invert0 voor normale uitvoer, 1 voor geïnverteerde uitvoer. Alleen de minst significante bit wordt gebruikt.

show() None

Schrijf de interne framebuffer weg naar het display.

fill(col: int) None

Vul de hele framebuffer met één enkele kleur.

  • col – Kleurwaarde (0 voor uit, 1 voor aan).

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

Stel de kleur van een enkele pixel in.

  • x – Kolomcoördinaat.

  • y – Rijcoördinaat.

  • col – Kleurwaarde (0 of 1).

scroll(dx: int, dy: int) None

Verschuif de inhoud van de framebuffer met de opgegeven offsets. Pixels die buiten de grenzen worden geschoven gaan verloren; vrijgekomen pixels blijven ongewijzigd.

  • dx – Horizontale verschuiving in pixels.

  • dy – Verticale verschuiving in pixels.

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

Teken een tekenreeks met het ingebouwde 8x8-lettertype.

  • string – Te tekenen tekst.

  • x – Beginkolomcoördinaat.

  • y – Beginrijcoördinaat.

  • col – Voorgrondkleur (standaard 1).

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

Via I2C aangesloten SSD1306-stuurprogramma. Erft van SSD1306.

Argumenten:

  • width – Displaybreedte in pixels.

  • height – Displayhoogte in pixels.

  • i2c – Een geïnitialiseerd machine.I2C-object (of compatibel).

  • addr – 7-bits I2C-apparaatadres (standaard 0x3C).

  • external_vccTrue voor externe VCC, False om de interne charge pump te gebruiken.

write_cmd(cmd: int) None

Stuur een enkele commandobyte naar het display via I2C.

write_data(buf: bytes) None

Stuur een buffer met pixelgegevens naar het display via I2C.

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

Via SPI aangesloten SSD1306-stuurprogramma. Erft van SSD1306. Gebruikt een vaste SPI-kloksnelheid van 10 MHz.

Argumenten:

  • width – Displaybreedte in pixels.

  • height – Displayhoogte in pixels.

  • spi – Een pyb.SPI-object (of compatibel).

  • dc – Data/commando-selectiepin.

  • res – Resetpin.

  • cs – Chip-selectpin.

  • external_vccTrue voor externe VCC, False om de interne charge pump te gebruiken.

write_cmd(cmd: int) None

Stuur een enkele commandobyte naar het display via SPI.

write_framebuf() None

Verzend de hele framebuffer naar het display via SPI.

poweron() None

Schakel de resetlijn om het display in te schakelen.

Constanten

ssd1306.SET_CONTRAST: int

Commando 0x81 – stel het displaycontrast in.

ssd1306.SET_ENTIRE_ON: int

Commando 0xA4 – hervat het display vanuit de RAM-inhoud.

ssd1306.SET_NORM_INV: int

Commando 0xA6 – selectie normaal/invers display.

ssd1306.SET_DISP: int

Commando 0xAE – display aan/uit.

ssd1306.SET_MEM_ADDR: int

Commando 0x20 – geheugenadresseringsmodus.

ssd1306.SET_COL_ADDR: int

Commando 0x21 – kolomadresbereik.

ssd1306.SET_PAGE_ADDR: int

Commando 0x22 – pagina-adresbereik.

ssd1306.SET_DISP_START_LINE: int

Commando 0x40 – displaystartlijn.

ssd1306.SET_SEG_REMAP: int

Commando 0xA0 – segment-remap.

ssd1306.SET_MUX_RATIO: int

Commando 0xA8 – multiplexverhouding.

ssd1306.SET_COM_OUT_DIR: int

Commando 0xC0 – COM-uitvoerscanrichting.

ssd1306.SET_DISP_OFFSET: int

Commando 0xD3 – displayoffset.

ssd1306.SET_COM_PIN_CFG: int

Commando 0xDA – hardwareconfiguratie COM-pinnen.

ssd1306.SET_DISP_CLK_DIV: int

Commando 0xD5 – displayklokdeelverhouding / oscillatorfrequentie.

ssd1306.SET_PRECHARGE: int

Commando 0xD9 – voorlaadperiode.

ssd1306.SET_VCOM_DESEL: int

Commando 0xDB – VCOMH-deselectieniveau.

ssd1306.SET_CHARGE_PUMP: int

Commando 0x8D – configuratie charge pump.