kelas SPIDisplay -- Driver Tampilan SPI

Kelas SPIDisplay menggerakkan panel TFT dan OLED kecil yang terhubung melalui SPI -- paling umum adalah SSD1351 128x160 RGB OLED pada OpenMV LCD Shield. Driver memiliki bus SPI dan jalur GPIO chip-select / DC secara internal, sehingga pemanggil hanya perlu mengonfigurasi geometri panel, refresh rate, dan flag orientasi apa pun. Inisialisasi spesifik panel (urutan register, pembingkaian penulisan RAM) disediakan melalui argumen kata kunci controller -- oper instans SSD1351 untuk menggerakkan LCD Shield, atau implementasikan kelas kontroler Anda sendiri untuk panel lain.

Bingkai ditampilkan dengan memanggil write() dengan sebuah image.Image. Driver mengonversi sumber ke RGB565 dan menerapkan penskalaan, ROI, palet, dan transformasi orientasi secara internal, sehingga pemanggil tidak perlu mengubah ukuran citra terlebih dahulu. Kecerahan backlight dapat dibiarkan sebagai GPIO on/off sederhana (default) atau digerakkan oleh DACBacklight / PWMBacklight dengan meneruskan salah satunya sebagai argumen kata kunci backlight.

Contoh -- mencerminkan kamera ke OLED SSD1351 pada OpenMV LCD Shield:

import csi
import display

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize((128, 160))        # matches the SSD1351 panel

lcd = display.SPIDisplay(controller=display.SSD1351())

while True:
    lcd.write(csi0.snapshot())

Konstruktor

class display.SPIDisplay(width: int = 128, height: int = 160, refresh: int = 60, bgr: bool = False, byte_swap: bool = False, hmirror: bool = True, vflip: bool = True, triple_buffer: bool | None = None, *, controller: object | None = None, backlight: object | None = None)

width Lebar LCD SPI dalam piksel (1..32767).

height Tinggi LCD SPI dalam piksel (1..32767).

refresh Refresh rate LCD dalam hertz (1..120). Mengontrol kecepatan clock SPI.

bgr atur ke True untuk menukar saluran merah dan biru.

byte_swap atur ke True untuk menukar byte piksel RGB565 yang dikirim ke LCD.

hmirror atur ke True untuk mencerminkan output tampilan secara horizontal.

vflip atur ke True untuk membalik output tampilan secara vertikal.

triple_buffer jika True membuat pembaruan layar menjadi non-blocking dengan biaya 3X ukuran tampilan dalam RAM. Default bergantung pada board (aktif untuk board dengan SDRAM).

controller hanya kata kunci. Oper instans kelas chip kontroler untuk menginisialisasinya bersama tampilan. Jika disediakan, metode init, display_on, display_off, dan ram_write kontroler (jika ada) dipanggil alih-alih perintah bawaan.

backlight hanya kata kunci. Oper modul kontroler backlight yang akan digunakan. Secara default backlight dikendalikan melalui pin GPIO.

width() int

Mengembalikan lebar layar.

height() int

Mengembalikan tinggi layar.

refresh() int

Mengembalikan refresh rate.

bgr() bool

Mengembalikan apakah saluran merah dan biru ditukar.

byte_swap() bool

Mengembalikan apakah piksel RGB565 dikirim dalam urutan byte terbalik.

triple_buffer() bool

Mengembalikan apakah triple buffering diaktifkan.

framesize() int

Mengembalikan identifikasi framesize yang dikonfigurasi.

write(image: image.Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | image.Image | None = None, alpha_palette: image.Image | None = None, hint: int = 0) None

Menampilkan image dengan sudut kiri atasnya pada (x, y). String path dapat diteruskan sebagai pengganti citra untuk memuat dan menggambarnya dalam satu langkah.

x_scale faktor skala sumbu x. Nilai negatif membalik secara horizontal. Jika y_scale dihilangkan, ia mengikuti x_scale untuk mempertahankan rasio aspek.

y_scale faktor skala sumbu y. Nilai negatif membalik secara vertikal (memerlukan triple_buffer=True). Jika x_scale dihilangkan, ia mengikuti y_scale.

roi persegi panjang wilayah yang diminati (x, y, w, h) dari citra sumber yang akan digambar.

rgb_channel saluran RGB yang diekstrak dari citra sumber RGB565 (0=R, 1=G, 2=B, -1=semua). Rentang: -1..2.

alpha opasitas citra. 0 sepenuhnya transparan (hitam), 255 buram. Rentang: 0..255.

color_palette enum palet warna (mis. image.PALETTE_RAINBOW) atau citra RGB565 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai skala abu-abu dari sumber. Diterapkan setelah ekstraksi rgb_channel.

alpha_palette citra skala abu-abu 256 piksel yang digunakan sebagai tabel pencarian alpha per piksel yang memodulasi alpha berdasarkan nilai skala abu-abu sumber.

hint OR logika dari flag-flag:

clear(display_off: bool = False) None

Membersihkan layar LCD menjadi hitam.

display_off jika True, mematikan logika tampilan alih-alih membersihkan buffer bingkai. Backlight juga harus dinonaktifkan setelahnya.

backlight(value: int | None = None) int | None

Dengan value, mengatur intensitas backlight (0=mati..100=penuh). Tanpa argumen, mengembalikan nilai backlight saat ini.

Kecuali kontroler DACBacklight atau PWMBacklight diteruskan saat konstruksi, backlight digerakkan sebagai pin GPIO dan hanya berpindah dari 0 (mati) ke non-nol (menyala).

bus_write(cmd: int, args: int | bytes | None = None, *, dcs: bool = False) None

Mengirim cmd ke tampilan melalui bus SPI, opsional diikuti oleh args (sebuah byte int atau buffer byte). dcs memilih framing DCS ketika didukung oleh kontroler.

bus_read(cmd: int, len: int, args: int | bytes | None = None, *, dcs: bool = False) bytearray

Mengirim cmd melalui bus SPI dan membaca kembali len byte, mengembalikannya sebagai bytearray. args opsional ditulis sebelum pembacaan (sebuah byte int atau buffer byte). dcs memilih framing DCS ketika didukung oleh kontroler.

ioctl(cmd: int, arg: object | None = None) object

Mengeluarkan ioctl cmd spesifik kontroler dengan arg opsional. Melempar ValueError jika tampilan yang mendasarinya tidak mendukung ioctl.