ssd1306 — Драйвер OLED

Этот модуль предоставляет драйвер для OLED-дисплеев на базе SSD1306. Поддерживаются два варианта транспорта: I2C (SSD1306_I2C) и SPI (SSD1306_SPI). Оба наследуют API рисования от SSD1306, который оборачивает framebuf.FrameBuffer1.

Пример:

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

Классы

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

Базовый класс для OLED-дисплеев SSD1306. Подклассы должны инициализировать self.framebuf и предоставлять методы write_cmd, write_data, write_framebuf и poweron.

Аргументы:

  • width – Ширина дисплея в пикселях.

  • height – Высота дисплея в пикселях (должна быть кратна 8).

  • external_vccTrue, если используется внешний источник VCC, False для включения внутреннего зарядового насоса.

Атрибуты экземпляра:

  • width – Ширина дисплея в пикселях.

  • height – Высота дисплея в пикселях.

  • external_vcc – Флаг внешнего VCC.

  • pages – Количество страниц высотой 8 пикселей (height // 8).

init_display() None

Отправляет последовательность команд инициализации на дисплей, очищает буфер кадра и обновляет его. Вызывается автоматически из __init__.

poweroff() None

Выключает дисплей (режим сна).

contrast(contrast: int) None

Устанавливает контрастность дисплея.

  • contrast – Значение контрастности в диапазоне 0255.

invert(invert: int) None

Инвертирует цвета дисплея.

  • invert0 для обычного вывода, 1 для инвертированного вывода. Используется только младший значащий бит.

show() None

Сбрасывает внутренний буфер кадра на дисплей.

fill(col: int) None

Заполняет весь буфер кадра одним цветом.

  • col – Значение цвета (0 для выключенного, 1 для включенного).

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

Устанавливает цвет одного пикселя.

  • x – Координата столбца.

  • y – Координата строки.

  • col – Значение цвета (0 или 1).

scroll(dx: int, dy: int) None

Сдвигает содержимое буфера кадра на заданные смещения. Пиксели, выходящие за пределы, теряются; освобождённые пиксели остаются без изменений.

  • dx – Горизонтальный сдвиг в пикселях.

  • dy – Вертикальный сдвиг в пикселях.

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

Рисует строку, используя встроенный шрифт 8x8.

  • string – Текст для отрисовки.

  • x – Начальная координата столбца.

  • y – Начальная координата строки.

  • col – Цвет переднего плана (по умолчанию 1).

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

Драйвер SSD1306, подключаемый по I2C. Наследует от SSD1306.

Аргументы:

  • width – Ширина дисплея в пикселях.

  • height – Высота дисплея в пикселях.

  • i2c – Инициализированный объект machine.I2C (или совместимый).

  • addr – 7-битный адрес устройства I2C (по умолчанию 0x3C).

  • external_vccTrue для внешнего VCC, False для использования внутреннего зарядового насоса.

write_cmd(cmd: int) None

Отправляет один командный байт на дисплей по I2C.

write_data(buf: bytes) None

Отправляет буфер данных пикселей на дисплей по 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)

Драйвер SSD1306, подключаемый по SPI. Наследует от SSD1306. Использует фиксированную тактовую частоту SPI 10 МГц.

Аргументы:

  • width – Ширина дисплея в пикселях.

  • height – Высота дисплея в пикселях.

  • spi – Объект pyb.SPI (или совместимый).

  • dc – Вывод выбора данные/команда.

  • res – Вывод сброса.

  • cs – Вывод выбора микросхемы (chip-select).

  • external_vccTrue для внешнего VCC, False для использования внутреннего зарядового насоса.

write_cmd(cmd: int) None

Отправляет один командный байт на дисплей по SPI.

write_framebuf() None

Передаёт весь буфер кадра на дисплей по SPI.

poweron() None

Переключает линию сброса для включения дисплея.

Константы

ssd1306.SET_CONTRAST: int

Команда 0x81 – установка контрастности дисплея.

ssd1306.SET_ENTIRE_ON: int

Команда 0xA4 – возобновление вывода дисплея из содержимого RAM.

ssd1306.SET_NORM_INV: int

Команда 0xA6 – выбор обычного/инверсного режима дисплея.

ssd1306.SET_DISP: int

Команда 0xAE – включение/выключение дисплея.

ssd1306.SET_MEM_ADDR: int

Команда 0x20 – режим адресации памяти.

ssd1306.SET_COL_ADDR: int

Команда 0x21 – диапазон адресов столбцов.

ssd1306.SET_PAGE_ADDR: int

Команда 0x22 – диапазон адресов страниц.

ssd1306.SET_DISP_START_LINE: int

Команда 0x40 – начальная строка дисплея.

ssd1306.SET_SEG_REMAP: int

Команда 0xA0 – переотображение сегментов.

ssd1306.SET_MUX_RATIO: int

Команда 0xA8 – коэффициент мультиплексирования.

ssd1306.SET_COM_OUT_DIR: int

Команда 0xC0 – направление сканирования вывода COM.

ssd1306.SET_DISP_OFFSET: int

Команда 0xD3 – смещение дисплея.

ssd1306.SET_COM_PIN_CFG: int

Команда 0xDA – аппаратная конфигурация выводов COM.

ssd1306.SET_DISP_CLK_DIV: int

Команда 0xD5 – коэффициент деления тактовой частоты дисплея / частота генератора.

ssd1306.SET_PRECHARGE: int

Команда 0xD9 – период предварительной зарядки.

ssd1306.SET_VCOM_DESEL: int

Команда 0xDB – уровень отключения VCOMH.

ssd1306.SET_CHARGE_PUMP: int

Команда 0x8D – конфигурация зарядового насоса.