ssd1306 — Controlador OLED

Este módulo proporciona un controlador para pantallas OLED basadas en SSD1306. Se admiten dos variantes de transporte: I2C (SSD1306_I2C) y SPI (SSD1306_SPI). Ambas heredan la API de dibujo de SSD1306, que envuelve un framebuf.FrameBuffer1.

Ejemplo:

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

Clases

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

Clase base para pantallas OLED SSD1306. Las subclases deben inicializar self.framebuf y proporcionar los métodos write_cmd, write_data, write_framebuf y poweron.

Argumentos:

  • width – Ancho de la pantalla en píxeles.

  • height – Alto de la pantalla en píxeles (debe ser múltiplo de 8).

  • external_vccTrue si se utiliza una fuente VCC externa, False para habilitar la bomba de carga interna.

Atributos de instancia:

  • width – Ancho de la pantalla en píxeles.

  • height – Alto de la pantalla en píxeles.

  • external_vcc – Indicador de VCC externo.

  • pages – Número de páginas de 8 píxeles de alto (height // 8).

init_display() None

Envía la secuencia de comandos de inicialización a la pantalla, borra el framebuffer y lo actualiza. Llamado automáticamente por __init__.

poweroff() None

Apaga la pantalla (modo de reposo).

contrast(contrast: int) None

Establece el contraste de la pantalla.

  • contrast – Valor de contraste en el rango 0255.

invert(invert: int) None

Invierte los colores de la pantalla.

  • invert0 para salida normal, 1 para salida invertida. Solo se utiliza el bit menos significativo.

show() None

Vuelca el framebuffer interno a la pantalla.

fill(col: int) None

Rellena todo el framebuffer con un único color.

  • col – Valor de color (0 para apagado, 1 para encendido).

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

Establece el color de un solo píxel.

  • x – Coordenada de columna.

  • y – Coordenada de fila.

  • col – Valor de color (0 o 1).

scroll(dx: int, dy: int) None

Desplaza el contenido del framebuffer según los desplazamientos indicados. Los píxeles que se desplazan fuera de los límites se pierden; los píxeles vacíos se dejan intactos.

  • dx – Desplazamiento horizontal en píxeles.

  • dy – Desplazamiento vertical en píxeles.

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

Dibuja una cadena usando la fuente integrada de 8x8.

  • string – Texto a dibujar.

  • x – Coordenada de columna inicial.

  • y – Coordenada de fila inicial.

  • col – Color de primer plano (predeterminado 1).

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

Controlador SSD1306 conectado por I2C. Hereda de SSD1306.

Argumentos:

  • width – Ancho de la pantalla en píxeles.

  • height – Alto de la pantalla en píxeles.

  • i2c – Un objeto machine.I2C (o compatible) ya inicializado.

  • addr – Dirección de dispositivo I2C de 7 bits (predeterminado 0x3C).

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

write_cmd(cmd: int) None

Envía un único byte de comando a la pantalla a través de I2C.

write_data(buf: bytes) None

Envía un búfer de datos de píxeles a la pantalla a través de 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 conectado por SPI. Hereda de SSD1306. Utiliza una frecuencia de reloj SPI fija de 10 MHz.

Argumentos:

  • width – Ancho de la pantalla en píxeles.

  • height – Alto de la pantalla en píxeles.

  • spi – Un objeto pyb.SPI (o compatible).

  • dc – Pin de selección de datos/comando.

  • res – Pin de reinicio.

  • cs – Pin de selección de chip.

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

write_cmd(cmd: int) None

Envía un único byte de comando a la pantalla a través de SPI.

write_framebuf() None

Transmite el framebuffer completo a la pantalla a través de SPI.

poweron() None

Alterna la línea de reinicio para encender la pantalla.

Constantes

ssd1306.SET_CONTRAST: int

Comando 0x81 – establece el contraste de la pantalla.

ssd1306.SET_ENTIRE_ON: int

Comando 0xA4 – reanuda la pantalla desde el contenido de la RAM.

ssd1306.SET_NORM_INV: int

Comando 0xA6 – selección de pantalla normal/inversa.

ssd1306.SET_DISP: int

Comando 0xAE – encendido/apagado de la pantalla.

ssd1306.SET_MEM_ADDR: int

Comando 0x20 – modo de direccionamiento de memoria.

ssd1306.SET_COL_ADDR: int

Comando 0x21 – rango de direcciones de columna.

ssd1306.SET_PAGE_ADDR: int

Comando 0x22 – rango de direcciones de página.

ssd1306.SET_DISP_START_LINE: int

Comando 0x40 – línea de inicio de la pantalla.

ssd1306.SET_SEG_REMAP: int

Comando 0xA0 – reasignación de segmentos.

ssd1306.SET_MUX_RATIO: int

Comando 0xA8 – relación de multiplexación.

ssd1306.SET_COM_OUT_DIR: int

Comando 0xC0 – dirección de barrido de salida COM.

ssd1306.SET_DISP_OFFSET: int

Comando 0xD3 – desplazamiento de la pantalla.

ssd1306.SET_COM_PIN_CFG: int

Comando 0xDA – configuración de hardware de los pines COM.

ssd1306.SET_DISP_CLK_DIV: int

Comando 0xD5 – relación de división del reloj de la pantalla / frecuencia del oscilador.

ssd1306.SET_PRECHARGE: int

Comando 0xD9 – periodo de precarga.

ssd1306.SET_VCOM_DESEL: int

Comando 0xDB – nivel de deselección VCOMH.

ssd1306.SET_CHARGE_PUMP: int

Comando 0x8D – configuración de la bomba de carga.