ssd1306 — Driver OLED

Este módulo fornece um driver para displays OLED baseados no SSD1306. Há suporte a duas variantes de transporte: I2C (SSD1306_I2C) e SPI (SSD1306_SPI). Ambas herdam a API de desenho de SSD1306, que encapsula um framebuf.FrameBuffer1.

Exemplo:

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

Classes

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

Classe base para displays OLED SSD1306. As subclasses devem inicializar self.framebuf e fornecer os métodos write_cmd, write_data, write_framebuf e poweron.

Argumentos:

  • width – Largura do display em pixels.

  • height – Altura do display em pixels (deve ser múltiplo de 8).

  • external_vccTrue se uma fonte VCC externa for utilizada, False para habilitar a bomba de carga interna.

Atributos de instância:

  • width – Largura do display em pixels.

  • height – Altura do display em pixels.

  • external_vcc – Flag de VCC externo.

  • pages – Número de páginas de 8 pixels de altura (height // 8).

init_display() None

Envia a sequência de comandos de inicialização ao display, limpa o framebuffer e atualiza-o. Chamado automaticamente por __init__.

poweroff() None

Desliga o display (modo de suspensão).

contrast(contrast: int) None

Define o contraste do display.

  • contrast – Valor de contraste na faixa de 0 a 255.

invert(invert: int) None

Inverte as cores do display.

  • invert0 para saída normal, 1 para saída invertida. Apenas o bit menos significativo é utilizado.

show() None

Descarrega o framebuffer interno para o display.

fill(col: int) None

Preenche todo o framebuffer com uma única cor.

  • col – Valor de cor (0 para apagado, 1 para aceso).

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

Define a cor de um único pixel.

  • x – Coordenada da coluna.

  • y – Coordenada da linha.

  • col – Valor de cor (0 ou 1).

scroll(dx: int, dy: int) None

Desloca o conteúdo do framebuffer pelos deslocamentos informados. Os pixels deslocados para fora dos limites são perdidos; os pixels desocupados permanecem inalterados.

  • dx – Deslocamento horizontal em pixels.

  • dy – Deslocamento vertical em pixels.

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

Desenha uma string usando a fonte 8x8 embutida.

  • string – Texto a desenhar.

  • x – Coordenada inicial da coluna.

  • y – Coordenada inicial da linha.

  • col – Cor de primeiro plano (padrão 1).

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

Driver SSD1306 conectado via I2C. Herda de SSD1306.

Argumentos:

  • width – Largura do display em pixels.

  • height – Altura do display em pixels.

  • i2c – Um objeto machine.I2C (ou compatível) já inicializado.

  • addr – Endereço I2C do dispositivo de 7 bits (padrão 0x3C).

  • external_vccTrue para VCC externo, False para usar a bomba de carga interna.

write_cmd(cmd: int) None

Envia um único byte de comando ao display via I2C.

write_data(buf: bytes) None

Envia um buffer de dados de pixels ao 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)

Driver SSD1306 conectado via SPI. Herda de SSD1306. Usa uma taxa de clock SPI fixa de 10 MHz.

Argumentos:

  • width – Largura do display em pixels.

  • height – Altura do display em pixels.

  • spi – Um objeto pyb.SPI (ou compatível).

  • dc – Pino de seleção de dados/comando.

  • res – Pino de reset.

  • cs – Pino de chip-select.

  • external_vccTrue para VCC externo, False para usar a bomba de carga interna.

write_cmd(cmd: int) None

Envia um único byte de comando ao display via SPI.

write_framebuf() None

Transmite todo o framebuffer ao display via SPI.

poweron() None

Alterna a linha de reset para ligar o display.

Constantes

ssd1306.SET_CONTRAST: int

Comando 0x81 – define o contraste do display.

ssd1306.SET_ENTIRE_ON: int

Comando 0xA4 – retoma o display a partir do conteúdo da RAM.

ssd1306.SET_NORM_INV: int

Comando 0xA6 – seleção de display normal/inverso.

ssd1306.SET_DISP: int

Comando 0xAE – liga/desliga o display.

ssd1306.SET_MEM_ADDR: int

Comando 0x20 – modo de endereçamento de memória.

ssd1306.SET_COL_ADDR: int

Comando 0x21 – faixa de endereços de coluna.

ssd1306.SET_PAGE_ADDR: int

Comando 0x22 – faixa de endereços de página.

ssd1306.SET_DISP_START_LINE: int

Comando 0x40 – linha inicial do display.

ssd1306.SET_SEG_REMAP: int

Comando 0xA0 – remapeamento de segmento.

ssd1306.SET_MUX_RATIO: int

Comando 0xA8 – razão de multiplexação.

ssd1306.SET_COM_OUT_DIR: int

Comando 0xC0 – direção de varredura da saída COM.

ssd1306.SET_DISP_OFFSET: int

Comando 0xD3 – deslocamento do display.

ssd1306.SET_COM_PIN_CFG: int

Comando 0xDA – configuração de hardware dos pinos COM.

ssd1306.SET_DISP_CLK_DIV: int

Comando 0xD5 – razão de divisão do clock do display / frequência do oscilador.

ssd1306.SET_PRECHARGE: int

Comando 0xD9 – período de pré-carga.

ssd1306.SET_VCOM_DESEL: int

Comando 0xDB – nível de deseleção VCOMH.

ssd1306.SET_CHARGE_PUMP: int

Comando 0x8D – configuração da bomba de carga.