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)¶
widthLebar LCD SPI dalam piksel (1..32767).heightTinggi LCD SPI dalam piksel (1..32767).refreshRefresh rate LCD dalam hertz (1..120). Mengontrol kecepatan clock SPI.bgratur ke True untuk menukar saluran merah dan biru.byte_swapatur ke True untuk menukar byte piksel RGB565 yang dikirim ke LCD.hmirroratur ke True untuk mencerminkan output tampilan secara horizontal.vflipatur ke True untuk membalik output tampilan secara vertikal.triple_bufferjika True membuat pembaruan layar menjadi non-blocking dengan biaya 3X ukuran tampilan dalam RAM. Default bergantung pada board (aktif untuk board dengan SDRAM).controllerhanya kata kunci. Oper instans kelas chip kontroler untuk menginisialisasinya bersama tampilan. Jika disediakan, metodeinit,display_on,display_off, danram_writekontroler (jika ada) dipanggil alih-alih perintah bawaan.backlighthanya kata kunci. Oper modul kontroler backlight yang akan digunakan. Secara default backlight dikendalikan melalui pin GPIO.- 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
imagedengan sudut kiri atasnya pada(x, y). String path dapat diteruskan sebagai pengganti citra untuk memuat dan menggambarnya dalam satu langkah.x_scalefaktor skala sumbu x. Nilai negatif membalik secara horizontal. Jikay_scaledihilangkan, ia mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalefaktor skala sumbu y. Nilai negatif membalik secara vertikal (memerlukantriple_buffer=True). Jikax_scaledihilangkan, ia mengikutiy_scale.roipersegi panjang wilayah yang diminati(x, y, w, h)dari citra sumber yang akan digambar.rgb_channelsaluran RGB yang diekstrak dari citra sumber RGB565 (0=R, 1=G, 2=B, -1=semua). Rentang: -1..2.alphaopasitas citra. 0 sepenuhnya transparan (hitam), 255 buram. Rentang: 0..255.color_paletteenum 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 ekstraksirgb_channel.alpha_palettecitra skala abu-abu 256 piksel yang digunakan sebagai tabel pencarian alpha per piksel yang memodulasialphaberdasarkan nilai skala abu-abu sumber.hintOR logika dari flag-flag:image.AREA: Gunakan penskalaan area saat memperkecil.image.BILINEAR: Gunakan penskalaan bilinear.image.BICUBIC: Gunakan penskalaan bicubic.image.CENTER: Pusatkan citra pada tampilan (setelah penskalaan).image.HMIRROR: Cerminkan citra secara horizontal.image.VFLIP: Balik citra secara vertikal.image.TRANSPOSE: Transpose citra (tukar x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Terapkan ekstraksirgb_channelsebelum penskalaan.image.APPLY_COLOR_PALETTE_FIRST: Terapkancolor_palettesebelum penskalaan.image.SCALE_ASPECT_KEEP: Skalakan agar muat di dalam tampilan.image.SCALE_ASPECT_EXPAND: Skalakan untuk mengisi tampilan (dengan pemotongan).image.SCALE_ASPECT_IGNORE: Skalakan untuk mengisi tampilan (dengan peregangan).image.ROTATE_90: Putar 90 derajat (VFLIP | TRANSPOSE).image.ROTATE_180: Putar 180 derajat (HMIRROR | VFLIP).image.ROTATE_270: Putar 270 derajat (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Membersihkan layar LCD menjadi hitam.
display_offjika 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
DACBacklightatauPWMBacklightditeruskan 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
cmdke tampilan melalui bus SPI, opsional diikuti olehargs(sebuah byte int atau buffer byte).dcsmemilih framing DCS ketika didukung oleh kontroler.
- bus_read(cmd: int, len: int, args: int | bytes | None = None, *, dcs: bool = False) bytearray¶
Mengirim
cmdmelalui bus SPI dan membaca kembalilenbyte, mengembalikannya sebagaibytearray.argsopsional ditulis sebelum pembacaan (sebuah byte int atau buffer byte).dcsmemilih framing DCS ketika didukung oleh kontroler.