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.