ssd1306 --- Driver OLED

Modul ini menyediakan driver untuk layar OLED berbasis SSD1306. Dua varian transport yang didukung: I2C (SSD1306_I2C) dan SPI (SSD1306_SPI). Keduanya mewarisi API gambar dari SSD1306, yang membungkus framebuf.FrameBuffer1.

Contoh:

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

Kelas

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

Kelas dasar untuk layar OLED SSD1306. Subkelas harus menginisialisasi self.framebuf dan menyediakan metode write_cmd, write_data, write_framebuf, dan poweron.

Argumen:

  • width -- Lebar layar dalam piksel.

  • height -- Tinggi layar dalam piksel (harus kelipatan 8).

  • external_vcc -- True jika sumber VCC eksternal digunakan, False untuk mengaktifkan pompa muatan internal.

Atribut instans:

  • width -- Lebar layar dalam piksel.

  • height -- Tinggi layar dalam piksel.

  • external_vcc -- Flag VCC eksternal.

  • pages -- Jumlah halaman setinggi 8 piksel (height // 8).

init_display() None

Kirim urutan perintah inisialisasi ke layar, bersihkan buffer bingkai, dan segarkan. Dipanggil otomatis oleh __init__.

poweroff() None

Matikan layar (mode tidur).

contrast(contrast: int) None

Atur kontras layar.

  • contrast -- Nilai kontras dalam rentang 0--255.

invert(invert: int) None

Balikkan warna layar.

  • invert -- 0 untuk keluaran normal, 1 untuk keluaran terbalik. Hanya bit paling tidak signifikan yang digunakan.

show() None

Siram buffer bingkai internal ke layar.

fill(col: int) None

Isi seluruh buffer bingkai dengan satu warna.

  • col -- Nilai warna (0 untuk mati, 1 untuk menyala).

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

Atur warna satu piksel.

  • x -- Koordinat kolom.

  • y -- Koordinat baris.

  • col -- Nilai warna (0 atau 1).

scroll(dx: int, dy: int) None

Geser isi buffer bingkai dengan offset yang diberikan. Piksel yang bergeser keluar batas akan hilang; piksel yang dikosongkan dibiarkan tidak berubah.

  • dx -- Pergeseran horizontal dalam piksel.

  • dy -- Pergeseran vertikal dalam piksel.

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

Gambar string menggunakan font bawaan 8x8.

  • string -- Teks yang akan digambar.

  • x -- Koordinat kolom awal.

  • y -- Koordinat baris awal.

  • col -- Warna latar depan (default 1).

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

Driver SSD1306 terhubung I2C. Mewarisi dari SSD1306.

Argumen:

  • width -- Lebar layar dalam piksel.

  • height -- Tinggi layar dalam piksel.

  • i2c -- Objek machine.I2C (atau yang kompatibel) yang telah diinisialisasi.

  • addr -- Alamat perangkat I2C 7-bit (default 0x3C).

  • external_vcc -- True untuk VCC eksternal, False untuk menggunakan pompa muatan internal.

write_cmd(cmd: int) None

Kirim satu byte perintah ke layar melalui I2C.

write_data(buf: bytes) None

Kirim buffer data piksel ke layar melalui 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)

Driver SSD1306 terhubung SPI. Mewarisi dari SSD1306. Menggunakan kecepatan clock SPI tetap 10 MHz.

Argumen:

  • width -- Lebar layar dalam piksel.

  • height -- Tinggi layar dalam piksel.

  • spi -- Objek pyb.SPI (atau yang kompatibel).

  • dc -- Pin pemilih data/perintah.

  • res -- Pin reset.

  • cs -- Pin chip-select.

  • external_vcc -- True untuk VCC eksternal, False untuk menggunakan pompa muatan internal.

write_cmd(cmd: int) None

Kirim satu byte perintah ke layar melalui SPI.

write_framebuf() None

Transmisikan seluruh buffer bingkai ke layar melalui SPI.

poweron() None

Toggle jalur reset untuk menghidupkan layar.

Konstanta

ssd1306.SET_CONTRAST: int

Perintah 0x81 -- atur kontras layar.

ssd1306.SET_ENTIRE_ON: int

Perintah 0xA4 -- lanjutkan tampilan dari isi RAM.

ssd1306.SET_NORM_INV: int

Perintah 0xA6 -- pilih tampilan normal/terbalik.

ssd1306.SET_DISP: int

Perintah 0xAE -- nyala/mati layar.

ssd1306.SET_MEM_ADDR: int

Perintah 0x20 -- mode pengalamatan memori.

ssd1306.SET_COL_ADDR: int

Perintah 0x21 -- rentang alamat kolom.

ssd1306.SET_PAGE_ADDR: int

Perintah 0x22 -- rentang alamat halaman.

ssd1306.SET_DISP_START_LINE: int

Perintah 0x40 -- baris awal tampilan.

ssd1306.SET_SEG_REMAP: int

Perintah 0xA0 -- remap segmen.

ssd1306.SET_MUX_RATIO: int

Perintah 0xA8 -- rasio multipleks.

ssd1306.SET_COM_OUT_DIR: int

Perintah 0xC0 -- arah pemindaian keluaran COM.

ssd1306.SET_DISP_OFFSET: int

Perintah 0xD3 -- offset tampilan.

ssd1306.SET_COM_PIN_CFG: int

Perintah 0xDA -- konfigurasi hardware pin COM.

ssd1306.SET_DISP_CLK_DIV: int

Perintah 0xD5 -- rasio pembagi clock tampilan / frekuensi osilator.

ssd1306.SET_PRECHARGE: int

Perintah 0xD9 -- periode pre-charge.

ssd1306.SET_VCOM_DESEL: int

Perintah 0xDB -- level deselect VCOMH.

ssd1306.SET_CHARGE_PUMP: int

Perintah 0x8D -- konfigurasi pompa muatan.