ssd1306 — OLED ovladač

Tento modul poskytuje ovladač pro OLED displeje založené na čipu SSD1306. Podporovány jsou dvě varianty přenosu: I2C (SSD1306_I2C) a SPI (SSD1306_SPI). Obě dědí kreslicí API od třídy SSD1306, která obaluje framebuf.FrameBuffer1.

Příklad:

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()

Třídy

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

Základní třída pro OLED displeje SSD1306. Podtřídy musí inicializovat self.framebuf a poskytnout metody write_cmd, write_data, write_framebuf a poweron.

Argumenty:

  • width – Šířka displeje v pixelech.

  • height – Výška displeje v pixelech (musí být násobkem 8).

  • external_vccTrue, pokud se používá externí zdroj VCC, False pro povolení vnitřní nábojové pumpy.

Atributy instance:

  • width – Šířka displeje v pixelech.

  • height – Výška displeje v pixelech.

  • external_vcc – Příznak externího VCC.

  • pages – Počet stránek o výšce 8 pixelů (height // 8).

init_display() None

Odešle displeji inicializační sekvenci příkazů, vymaže framebuffer a obnoví zobrazení. Volá se automaticky z __init__.

poweroff() None

Vypne displej (režim spánku).

contrast(contrast: int) None

Nastaví kontrast displeje.

  • contrast – Hodnota kontrastu v rozsahu 0255.

invert(invert: int) None

Invertuje barvy displeje.

  • invert0 pro normální výstup, 1 pro invertovaný výstup. Použije se pouze nejméně významný bit.

show() None

Vyprázdní interní framebuffer na displej.

fill(col: int) None

Vyplní celý framebuffer jednou barvou.

  • col – Hodnota barvy (0 pro vypnuto, 1 pro zapnuto).

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

Nastaví barvu jednoho pixelu.

  • x – Souřadnice sloupce.

  • y – Souřadnice řádku.

  • col – Hodnota barvy (0 nebo 1).

scroll(dx: int, dy: int) None

Posune obsah framebufferu o zadané offsety. Pixely posunuté mimo hranice se ztratí; uvolněné pixely zůstanou nezměněny.

  • dx – Vodorovný posun v pixelech.

  • dy – Svislý posun v pixelech.

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

Vykreslí řetězec pomocí vestavěného fontu 8x8.

  • string – Text ke kreslení.

  • x – Počáteční souřadnice sloupce.

  • y – Počáteční souřadnice řádku.

  • col – Barva popředí (výchozí 1).

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

Ovladač SSD1306 připojeného přes I2C. Dědí od SSD1306.

Argumenty:

  • width – Šířka displeje v pixelech.

  • height – Výška displeje v pixelech.

  • i2c – Inicializovaný objekt machine.I2C (nebo kompatibilní).

  • addr – 7bitová I2C adresa zařízení (výchozí 0x3C).

  • external_vccTrue pro externí VCC, False pro použití vnitřní nábojové pumpy.

write_cmd(cmd: int) None

Odešle displeji přes I2C jeden bajt příkazu.

write_data(buf: bytes) None

Odešle displeji přes I2C buffer s daty pixelů.

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

Ovladač SSD1306 připojeného přes SPI. Dědí od SSD1306. Používá pevnou taktovací frekvenci SPI 10 MHz.

Argumenty:

  • width – Šířka displeje v pixelech.

  • height – Výška displeje v pixelech.

  • spi – Objekt pyb.SPI (nebo kompatibilní).

  • dc – Pin pro výběr dat/příkazu.

  • res – Reset pin.

  • cs – Pin pro výběr čipu (chip-select).

  • external_vccTrue pro externí VCC, False pro použití vnitřní nábojové pumpy.

write_cmd(cmd: int) None

Odešle displeji přes SPI jeden bajt příkazu.

write_framebuf() None

Přenese celý framebuffer na displej přes SPI.

poweron() None

Přepne reset linku pro zapnutí displeje.

Konstanty

ssd1306.SET_CONTRAST: int

Příkaz 0x81 – nastaví kontrast displeje.

ssd1306.SET_ENTIRE_ON: int

Příkaz 0xA4 – obnoví zobrazení z obsahu RAM.

ssd1306.SET_NORM_INV: int

Příkaz 0xA6 – volba normálního/invertovaného zobrazení.

ssd1306.SET_DISP: int

Příkaz 0xAE – zapnutí/vypnutí displeje.

ssd1306.SET_MEM_ADDR: int

Příkaz 0x20 – režim adresování paměti.

ssd1306.SET_COL_ADDR: int

Příkaz 0x21 – rozsah adres sloupců.

ssd1306.SET_PAGE_ADDR: int

Příkaz 0x22 – rozsah adres stránek.

ssd1306.SET_DISP_START_LINE: int

Příkaz 0x40 – počáteční řádek displeje.

ssd1306.SET_SEG_REMAP: int

Příkaz 0xA0 – přemapování segmentů.

ssd1306.SET_MUX_RATIO: int

Příkaz 0xA8 – multiplexní poměr.

ssd1306.SET_COM_OUT_DIR: int

Příkaz 0xC0 – směr skenování výstupu COM.

ssd1306.SET_DISP_OFFSET: int

Příkaz 0xD3 – offset displeje.

ssd1306.SET_COM_PIN_CFG: int

Příkaz 0xDA – hardwarová konfigurace pinů COM.

ssd1306.SET_DISP_CLK_DIV: int

Příkaz 0xD5 – dělicí poměr hodin displeje / frekvence oscilátoru.

ssd1306.SET_PRECHARGE: int

Příkaz 0xD9 – doba přednabíjení.

ssd1306.SET_VCOM_DESEL: int

Příkaz 0xDB – úroveň odpojení VCOMH.

ssd1306.SET_CHARGE_PUMP: int

Příkaz 0x8D – konfigurace nábojové pumpy.