ssd1306 --- OLED ドライバ

このモジュールは、SSD1306 ベースの OLED ディスプレイ用のドライバを提供します。I2C(SSD1306_I2C)と SPI(SSD1306_SPI)の 2 つのトランスポート方式がサポートされています。どちらも 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_cmdwrite_datawrite_framebufpoweron の各メソッドを提供する必要があります。

引数:

  • 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 -- 0--255 の範囲のコントラスト値。

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 を継承します。固定の SPI クロックレート 10 MHz を使用します。

引数:

  • width -- ディスプレイの幅(ピクセル単位)。

  • height -- ディスプレイの高さ(ピクセル単位)。

  • spi -- pyb.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 -- チャージポンプ構成。