ssd1306 — Driver OLED

Acest modul oferă un driver pentru afișajele OLED bazate pe SSD1306. Sunt acceptate două variante de transport: I2C (SSD1306_I2C) și SPI (SSD1306_SPI). Ambele moștenesc API-ul de desenare de la SSD1306, care încapsulează un framebuf.FrameBuffer1.

Exemplu:

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

Clase

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

Clasă de bază pentru afișajele OLED SSD1306. Subclasele trebuie să inițializeze self.framebuf și să furnizeze metodele write_cmd, write_data, write_framebuf și poweron.

Argumente:

  • width – Lățimea afișajului în pixeli.

  • height – Înălțimea afișajului în pixeli (trebuie să fie multiplu de 8).

  • external_vccTrue dacă se utilizează o sursă VCC externă, False pentru a activa pompa de sarcină internă.

Atribute de instanță:

  • width – Lățimea afișajului în pixeli.

  • height – Înălțimea afișajului în pixeli.

  • external_vcc – Indicator pentru VCC extern.

  • pages – Numărul de pagini cu înălțimea de 8 pixeli (height // 8).

init_display() None

Trimite secvența de comenzi de inițializare către afișaj, șterge tamponul de cadre și reîmprospătează. Apelată automat de __init__.

poweroff() None

Oprește afișajul (mod de repaus).

contrast(contrast: int) None

Setează contrastul afișajului.

  • contrast – Valoarea contrastului în intervalul 0255.

invert(invert: int) None

Inversează culorile afișajului.

  • invert0 pentru ieșire normală, 1 pentru ieșire inversată. Se utilizează doar bitul cel mai puțin semnificativ.

show() None

Golește tamponul de cadre intern către afișaj.

fill(col: int) None

Umple întregul tampon de cadre cu o singură culoare.

  • col – Valoarea culorii (0 pentru stins, 1 pentru aprins).

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

Setează culoarea unui singur pixel.

  • x – Coordonata coloanei.

  • y – Coordonata rândului.

  • col – Valoarea culorii (0 sau 1).

scroll(dx: int, dy: int) None

Deplasează conținutul tamponului de cadre cu decalajele specificate. Pixelii deplasați în afara limitelor se pierd; pixelii eliberați rămân neatinși.

  • dx – Deplasarea orizontală în pixeli.

  • dy – Deplasarea verticală în pixeli.

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

Desenează un șir folosind fontul integrat 8x8.

  • string – Textul de desenat.

  • x – Coordonata coloanei de start.

  • y – Coordonata rândului de start.

  • col – Culoarea de prim-plan (implicit 1).

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

Driver SSD1306 conectat prin I2C. Moștenește de la SSD1306.

Argumente:

  • width – Lățimea afișajului în pixeli.

  • height – Înălțimea afișajului în pixeli.

  • i2c – Un obiect machine.I2C (sau compatibil) inițializat.

  • addr – Adresa I2C de 7 biți a dispozitivului (implicit 0x3C).

  • external_vccTrue pentru VCC extern, False pentru a utiliza pompa de sarcină internă.

write_cmd(cmd: int) None

Trimite un singur octet de comandă către afișaj prin I2C.

write_data(buf: bytes) None

Trimite un tampon de date de pixeli către afișaj prin 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)

Driver SSD1306 conectat prin SPI. Moștenește de la SSD1306. Utilizează o frecvență de ceas SPI fixă de 10 MHz.

Argumente:

  • width – Lățimea afișajului în pixeli.

  • height – Înălțimea afișajului în pixeli.

  • spi – Un obiect pyb.SPI (sau compatibil).

  • dc – Pinul de selecție date/comandă.

  • res – Pinul de resetare.

  • cs – Pinul de selecție a cipului.

  • external_vccTrue pentru VCC extern, False pentru a utiliza pompa de sarcină internă.

write_cmd(cmd: int) None

Trimite un singur octet de comandă către afișaj prin SPI.

write_framebuf() None

Transmite întregul tampon de cadre către afișaj prin SPI.

poweron() None

Comută linia de resetare pentru a porni afișajul.

Constante

ssd1306.SET_CONTRAST: int

Comanda 0x81 – setează contrastul afișajului.

ssd1306.SET_ENTIRE_ON: int

Comanda 0xA4 – reia afișajul din conținutul RAM.

ssd1306.SET_NORM_INV: int

Comanda 0xA6 – selectare afișaj normal/inversat.

ssd1306.SET_DISP: int

Comanda 0xAE – pornire/oprire afișaj.

ssd1306.SET_MEM_ADDR: int

Comanda 0x20 – mod de adresare a memoriei.

ssd1306.SET_COL_ADDR: int

Comanda 0x21 – intervalul de adrese al coloanelor.

ssd1306.SET_PAGE_ADDR: int

Comanda 0x22 – intervalul de adrese al paginilor.

ssd1306.SET_DISP_START_LINE: int

Comanda 0x40 – linia de start a afișajului.

ssd1306.SET_SEG_REMAP: int

Comanda 0xA0 – remaparea segmentelor.

ssd1306.SET_MUX_RATIO: int

Comanda 0xA8 – raportul de multiplexare.

ssd1306.SET_COM_OUT_DIR: int

Comanda 0xC0 – direcția de scanare a ieșirii COM.

ssd1306.SET_DISP_OFFSET: int

Comanda 0xD3 – decalajul afișajului.

ssd1306.SET_COM_PIN_CFG: int

Comanda 0xDA – configurarea hardware a pinilor COM.

ssd1306.SET_DISP_CLK_DIV: int

Comanda 0xD5 – raportul de divizare a ceasului afișajului / frecvența oscilatorului.

ssd1306.SET_PRECHARGE: int

Comanda 0xD9 – perioada de preîncărcare.

ssd1306.SET_VCOM_DESEL: int

Comanda 0xDB – nivelul de deselectare VCOMH.

ssd1306.SET_CHARGE_PUMP: int

Comanda 0x8D – configurarea pompei de sarcină.