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 – Вивід вибору мікросхеми.

  • 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 – конфігурація зарядного насоса.