ssd1306 — Driver OLED

Questo modulo fornisce un driver per i display OLED basati su SSD1306. Sono supportate due varianti di trasporto: I2C (SSD1306_I2C) e SPI (SSD1306_SPI). Entrambe ereditano l’API di disegno da SSD1306, che incapsula un framebuf.FrameBuffer1.

Esempio:

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

Classi

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

Classe base per i display OLED SSD1306. Le sottoclassi devono inizializzare self.framebuf e fornire i metodi write_cmd, write_data, write_framebuf e poweron.

Argomenti:

  • width – Larghezza del display in pixel.

  • height – Altezza del display in pixel (deve essere un multiplo di 8).

  • external_vccTrue se viene utilizzata una sorgente VCC esterna, False per abilitare la pompa di carica interna.

Attributi di istanza:

  • width – Larghezza del display in pixel.

  • height – Altezza del display in pixel.

  • external_vcc – Flag VCC esterna.

  • pages – Numero di pagine alte 8 pixel (height // 8).

init_display() None

Invia la sequenza di comandi di inizializzazione al display, azzera il framebuffer ed esegue il refresh. Chiamato automaticamente da __init__.

poweroff() None

Spegne il display (modalità sleep).

contrast(contrast: int) None

Imposta il contrasto del display.

  • contrast – Valore di contrasto nell’intervallo 0255.

invert(invert: int) None

Inverte i colori del display.

  • invert0 per output normale, 1 per output invertito. Viene utilizzato solo il bit meno significativo.

show() None

Scarica il framebuffer interno sul display.

fill(col: int) None

Riempie l’intero framebuffer con un singolo colore.

  • col – Valore di colore (0 per spento, 1 per acceso).

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

Imposta il colore di un singolo pixel.

  • x – Coordinata di colonna.

  • y – Coordinata di riga.

  • col – Valore di colore (0 o 1).

scroll(dx: int, dy: int) None

Sposta il contenuto del framebuffer degli offset indicati. I pixel spostati fuori dai limiti vengono persi; i pixel lasciati liberi rimangono invariati.

  • dx – Spostamento orizzontale in pixel.

  • dy – Spostamento verticale in pixel.

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

Disegna una stringa utilizzando il font 8x8 integrato.

  • string – Testo da disegnare.

  • x – Coordinata di colonna iniziale.

  • y – Coordinata di riga iniziale.

  • col – Colore di primo piano (predefinito 1).

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

Driver SSD1306 connesso tramite I2C. Eredita da SSD1306.

Argomenti:

  • width – Larghezza del display in pixel.

  • height – Altezza del display in pixel.

  • i2c – Un oggetto machine.I2C (o compatibile) inizializzato.

  • addr – Indirizzo del dispositivo I2C a 7 bit (predefinito 0x3C).

  • external_vccTrue per VCC esterna, False per utilizzare la pompa di carica interna.

write_cmd(cmd: int) None

Invia un singolo byte di comando al display tramite I2C.

write_data(buf: bytes) None

Invia un buffer di dati di pixel al display tramite 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 connesso tramite SPI. Eredita da SSD1306. Utilizza una frequenza di clock SPI fissa di 10 MHz.

Argomenti:

  • width – Larghezza del display in pixel.

  • height – Altezza del display in pixel.

  • spi – Un oggetto pyb.SPI (o compatibile).

  • dc – Pin di selezione dati/comando.

  • res – Pin di reset.

  • cs – Pin di selezione del chip.

  • external_vccTrue per VCC esterna, False per utilizzare la pompa di carica interna.

write_cmd(cmd: int) None

Invia un singolo byte di comando al display tramite SPI.

write_framebuf() None

Trasmette l’intero framebuffer al display tramite SPI.

poweron() None

Commuta la linea di reset per accendere il display.

Costanti

ssd1306.SET_CONTRAST: int

Comando 0x81 – imposta il contrasto del display.

ssd1306.SET_ENTIRE_ON: int

Comando 0xA4 – riprende il display dal contenuto della RAM.

ssd1306.SET_NORM_INV: int

Comando 0xA6 – selezione display normale/invertito.

ssd1306.SET_DISP: int

Comando 0xAE – accensione/spegnimento del display.

ssd1306.SET_MEM_ADDR: int

Comando 0x20 – modalità di indirizzamento della memoria.

ssd1306.SET_COL_ADDR: int

Comando 0x21 – intervallo di indirizzi di colonna.

ssd1306.SET_PAGE_ADDR: int

Comando 0x22 – intervallo di indirizzi di pagina.

ssd1306.SET_DISP_START_LINE: int

Comando 0x40 – linea di partenza del display.

ssd1306.SET_SEG_REMAP: int

Comando 0xA0 – rimappatura dei segmenti.

ssd1306.SET_MUX_RATIO: int

Comando 0xA8 – rapporto di multiplexing.

ssd1306.SET_COM_OUT_DIR: int

Comando 0xC0 – direzione di scansione dell’uscita COM.

ssd1306.SET_DISP_OFFSET: int

Comando 0xD3 – offset del display.

ssd1306.SET_COM_PIN_CFG: int

Comando 0xDA – configurazione hardware dei pin COM.

ssd1306.SET_DISP_CLK_DIV: int

Comando 0xD5 – rapporto di divisione del clock del display / frequenza dell’oscillatore.

ssd1306.SET_PRECHARGE: int

Comando 0xD9 – periodo di pre-carica.

ssd1306.SET_VCOM_DESEL: int

Comando 0xDB – livello di deselezione VCOMH.

ssd1306.SET_CHARGE_PUMP: int

Comando 0x8D – configurazione della pompa di carica.