ssd1306 — Controlador OLED

Este módulo fornece um controlador para ecrãs OLED baseados no SSD1306. São suportadas 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 ecrãs 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 ecrã em pixels.

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

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

Atributos de instância:

  • width – Largura do ecrã em pixels.

  • height – Altura do ecrã em pixels.

  • external_vcc – Indicador de VCC externo.

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

init_display() None

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

poweroff() None

Desliga o ecrã (modo de suspensão).

contrast(contrast: int) None

Define o contraste do ecrã.

  • contrast – Valor de contraste no intervalo 0255.

invert(invert: int) None

Inverte as cores do ecrã.

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

show() None

Envia o framebuffer interno para o ecrã.

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 indicados. Os pixels deslocados para fora dos limites são perdidos; os pixels libertados ficam inalterados.

  • dx – Deslocamento horizontal em pixels.

  • dy – Deslocamento vertical em pixels.

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

Desenha uma cadeia de caracteres utilizando a fonte incorporada 8x8.

  • string – Texto a desenhar.

  • x – Coordenada de coluna inicial.

  • y – Coordenada de linha inicial.

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

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

Controlador SSD1306 ligado por I2C. Herda de SSD1306.

Argumentos:

  • width – Largura do ecrã em pixels.

  • height – Altura do ecrã em pixels.

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

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

  • external_vccTrue para VCC externo; False para utilizar a bomba de carga interna.

write_cmd(cmd: int) None

Envia um único byte de comando ao ecrã via I2C.

write_data(buf: bytes) None

Envia um buffer de dados de pixeis ao ecrã 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)

Controlador SSD1306 ligado por SPI. Herda de SSD1306. Utiliza uma velocidade de relógio SPI fixa de 10 MHz.

Argumentos:

  • width – Largura do ecrã em pixels.

  • height – Altura do ecrã 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 seleção de chip.

  • external_vccTrue para VCC externo; False para utilizar a bomba de carga interna.

write_cmd(cmd: int) None

Envia um único byte de comando ao ecrã via SPI.

write_framebuf() None

Transmite todo o framebuffer ao ecrã via SPI.

poweron() None

Alterna a linha de reset para ligar o ecrã.

Constantes

ssd1306.SET_CONTRAST: int

Comando 0x81 – definir contraste do ecrã.

ssd1306.SET_ENTIRE_ON: int

Comando 0xA4 – retomar o ecrã a partir do conteúdo da RAM.

ssd1306.SET_NORM_INV: int

Comando 0xA6 – seleção de ecrã normal/invertido.

ssd1306.SET_DISP: int

Comando 0xAE – ligar/desligar o ecrã.

ssd1306.SET_MEM_ADDR: int

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

ssd1306.SET_COL_ADDR: int

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

ssd1306.SET_PAGE_ADDR: int

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

ssd1306.SET_DISP_START_LINE: int

Comando 0x40 – linha de início do ecrã.

ssd1306.SET_SEG_REMAP: int

Comando 0xA0 – remapeamento de segmentos.

ssd1306.SET_MUX_RATIO: int

Comando 0xA8 – rácio de multiplexagem.

ssd1306.SET_COM_OUT_DIR: int

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

ssd1306.SET_DISP_OFFSET: int

Comando 0xD3 – deslocamento do ecrã.

ssd1306.SET_COM_PIN_CFG: int

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

ssd1306.SET_DISP_CLK_DIV: int

Comando 0xD5 – rácio de divisão do relógio do ecrã / 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 desseleção VCOMH.

ssd1306.SET_CHARGE_PUMP: int

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