ssd1306 — OLED 드라이버

이 모듈은 SSD1306 기반 OLED 디스플레이용 드라이버를 제공합니다. I2C(SSD1306_I2C)와 SPI(SSD1306_SPI)의 두 가지 전송 방식이 지원됩니다. 두 클래스 모두 framebuf.FrameBuffer1을 래핑하는 SSD1306으로부터 그리기 API를 상속받습니다.

예제:

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)

SSD1306 OLED 디스플레이의 기본 클래스입니다. 하위 클래스는 self.framebuf를 초기화하고 write_cmd, write_data, write_framebuf, poweron 메서드를 제공해야 합니다.

인수:

  • width – 디스플레이 너비(픽셀 단위).

  • height – 디스플레이 높이(픽셀 단위, 8의 배수여야 함).

  • external_vcc – 외부 VCC 소스를 사용하면 True, 내부 충전 펌프를 활성화하려면 False.

인스턴스 속성:

  • width – 디스플레이 너비(픽셀 단위).

  • height – 디스플레이 높이(픽셀 단위).

  • external_vcc – 외부 VCC 플래그.

  • pages – 8픽셀 높이 페이지의 개수(height // 8).

init_display() None

초기화 명령 시퀀스를 디스플레이로 전송하고, 프레임버퍼를 지운 후 새로 고칩니다. __init__에 의해 자동으로 호출됩니다.

poweroff() None

디스플레이를 끕니다(절전 모드).

contrast(contrast: int) None

디스플레이 명암(contrast)을 설정합니다.

  • contrast0255 범위의 명암 값.

invert(invert: int) None

디스플레이 색상을 반전시킵니다.

  • invert – 일반 출력은 0, 반전 출력은 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)

I2C 연결 SSD1306 드라이버. SSD1306으로부터 상속받습니다.

인수:

  • width – 디스플레이 너비(픽셀 단위).

  • height – 디스플레이 높이(픽셀 단위).

  • i2c – 초기화된 machine.I2C (또는 호환) 객체입니다.

  • addr – 7비트 I2C 장치 주소(기본값 0x3C).

  • external_vcc – 외부 VCC는 True, 내부 충전 펌프를 사용하려면 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)

SPI 연결 SSD1306 드라이버. SSD1306으로부터 상속받습니다. 고정된 10 MHz SPI 클럭 속도를 사용합니다.

인수:

  • width – 디스플레이 너비(픽셀 단위).

  • height – 디스플레이 높이(픽셀 단위).

  • spipyb.SPI (또는 호환) 객체입니다.

  • dc – 데이터/명령 선택 핀.

  • res – 리셋 핀.

  • cs – 칩 선택 핀.

  • external_vcc – 외부 VCC는 True, 내부 충전 펌프를 사용하려면 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 – 충전 펌프 구성.