ssd1306 — Sterownik OLED

Ten moduł udostępnia sterownik dla wyświetlaczy OLED opartych na układzie SSD1306. Obsługiwane są dwa warianty transmisji: I2C (SSD1306_I2C) oraz SPI (SSD1306_SPI). Oba dziedziczą interfejs rysowania z klasy SSD1306, która opakowuje obiekt framebuf.FrameBuffer1.

Przykład:

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

Klasy

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

Klasa bazowa dla wyświetlaczy OLED SSD1306. Podklasy muszą zainicjalizować self.framebuf oraz udostępniać metody write_cmd, write_data, write_framebuf i poweron.

Argumenty:

  • width – Szerokość wyświetlacza w pikselach.

  • height – Wysokość wyświetlacza w pikselach (musi być wielokrotnością 8).

  • external_vccTrue, jeśli używane jest zewnętrzne źródło VCC, False, aby włączyć wewnętrzną pompę ładunkową.

Atrybuty instancji:

  • width – Szerokość wyświetlacza w pikselach.

  • height – Wysokość wyświetlacza w pikselach.

  • external_vcc – Flaga zewnętrznego VCC.

  • pages – Liczba stron o wysokości 8 pikseli (height // 8).

init_display() None

Wysyła do wyświetlacza sekwencję poleceń inicjalizacyjnych, czyści bufor ramki i odświeża wyświetlacz. Wywoływana automatycznie przez __init__.

poweroff() None

Wyłącza wyświetlacz (tryb uśpienia).

contrast(contrast: int) None

Ustawia kontrast wyświetlacza.

  • contrast – Wartość kontrastu w zakresie 0255.

invert(invert: int) None

Odwraca kolory wyświetlacza.

  • invert0 dla normalnego wyjścia, 1 dla wyjścia odwróconego. Używany jest tylko najmniej znaczący bit.

show() None

Przesyła zawartość wewnętrznego bufora ramki na wyświetlacz.

fill(col: int) None

Wypełnia cały bufor ramki jednym kolorem.

  • col – Wartość koloru (0 – wyłączony, 1 – włączony).

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

Ustawia kolor pojedynczego piksela.

  • x – Współrzędna kolumny.

  • y – Współrzędna wiersza.

  • col – Wartość koloru (0 lub 1).

scroll(dx: int, dy: int) None

Przesuwa zawartość bufora ramki o podane wartości przesunięcia. Piksele wysunięte poza granice są tracone; opuszczone piksele pozostają nienaruszone.

  • dx – Przesunięcie poziome w pikselach.

  • dy – Przesunięcie pionowe w pikselach.

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

Rysuje napis przy użyciu wbudowanej czcionki 8x8.

  • string – Tekst do narysowania.

  • x – Początkowa współrzędna kolumny.

  • y – Początkowa współrzędna wiersza.

  • col – Kolor pierwszego planu (domyślnie 1).

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

Sterownik SSD1306 podłączany przez I2C. Dziedziczy z klasy SSD1306.

Argumenty:

  • width – Szerokość wyświetlacza w pikselach.

  • height – Wysokość wyświetlacza w pikselach.

  • i2c – Zainicjalizowany obiekt machine.I2C (lub kompatybilny).

  • addr – 7-bitowy adres urządzenia I2C (domyślnie 0x3C).

  • external_vccTrue dla zewnętrznego VCC, False aby użyć wewnętrznej pompy ładunkowej.

write_cmd(cmd: int) None

Wysyła pojedynczy bajt polecenia do wyświetlacza przez I2C.

write_data(buf: bytes) None

Wysyła bufor danych pikseli do wyświetlacza przez 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)

Sterownik SSD1306 podłączany przez SPI. Dziedziczy z klasy SSD1306. Używa stałej częstotliwości zegara SPI równej 10 MHz.

Argumenty:

  • width – Szerokość wyświetlacza w pikselach.

  • height – Wysokość wyświetlacza w pikselach.

  • spi – Obiekt pyb.SPI (lub kompatybilny).

  • dc – Pin wyboru danych/polecenia.

  • res – Pin resetu.

  • cs – Pin wyboru układu (chip-select).

  • external_vccTrue dla zewnętrznego VCC, False aby użyć wewnętrznej pompy ładunkowej.

write_cmd(cmd: int) None

Wysyła pojedynczy bajt polecenia do wyświetlacza przez SPI.

write_framebuf() None

Przesyła cały bufor ramki na wyświetlacz przez SPI.

poweron() None

Przełącza linię resetu, aby włączyć zasilanie wyświetlacza.

Stałe

ssd1306.SET_CONTRAST: int

Polecenie 0x81 – ustawienie kontrastu wyświetlacza.

ssd1306.SET_ENTIRE_ON: int

Polecenie 0xA4 – wznowienie wyświetlania z zawartości pamięci RAM.

ssd1306.SET_NORM_INV: int

Polecenie 0xA6 – wybór wyświetlania normalnego/odwróconego.

ssd1306.SET_DISP: int

Polecenie 0xAE – włączenie/wyłączenie wyświetlacza.

ssd1306.SET_MEM_ADDR: int

Polecenie 0x20 – tryb adresowania pamięci.

ssd1306.SET_COL_ADDR: int

Polecenie 0x21 – zakres adresów kolumn.

ssd1306.SET_PAGE_ADDR: int

Polecenie 0x22 – zakres adresów stron.

ssd1306.SET_DISP_START_LINE: int

Polecenie 0x40 – początkowa linia wyświetlania.

ssd1306.SET_SEG_REMAP: int

Polecenie 0xA0 – przemapowanie segmentów.

ssd1306.SET_MUX_RATIO: int

Polecenie 0xA8 – współczynnik multipleksowania.

ssd1306.SET_COM_OUT_DIR: int

Polecenie 0xC0 – kierunek skanowania wyjścia COM.

ssd1306.SET_DISP_OFFSET: int

Polecenie 0xD3 – przesunięcie wyświetlania.

ssd1306.SET_COM_PIN_CFG: int

Polecenie 0xDA – konfiguracja sprzętowa pinów COM.

ssd1306.SET_DISP_CLK_DIV: int

Polecenie 0xD5 – współczynnik podziału zegara wyświetlania / częstotliwość oscylatora.

ssd1306.SET_PRECHARGE: int

Polecenie 0xD9 – okres wstępnego ładowania (pre-charge).

ssd1306.SET_VCOM_DESEL: int

Polecenie 0xDB – poziom deselekcji VCOMH.

ssd1306.SET_CHARGE_PUMP: int

Polecenie 0x8D – konfiguracja pompy ładunkowej.