class SPIDisplay – SPI kijelző-illesztőprogram¶
A SPIDisplay osztály kis méretű, SPI-csatlakozású TFT és OLED paneleket vezérel – leggyakrabban az OpenMV LCD Shieldön található SSD1351 128x160 RGB OLED-et. Az illesztőprogram belsőleg birtokolja az SPI buszt és egy GPIO chip-select / DC vonalat, így a hívóknak csak a panel geometriáját, a frissítési frekvenciát és az esetleges tájolási flag-eket kell beállítaniuk. A panelspecifikus inicializálás (regiszter-szekvenciák, RAM-írás keretezése) a controller kulcsszavas argumentumon keresztül adható meg – adjon át egy SSD1351 példányt az LCD Shield vezérléséhez, vagy implementáljon saját vezérlőosztályt más panelekhez.
A képkockák megjelenítése a write() hívásával történik egy image.Image objektummal. Az illesztőprogram belsőleg RGB565-re alakítja a forrást, és alkalmazza a méretezést, a ROI-t, a palettát és a tájolási transzformációkat, így a hívónak nem kell előre méreteznie a képet. A háttérvilágítás fényereje meghagyható egyszerű ki/be GPIO-ként (alapértelmezett), vagy a DACBacklight / PWMBacklight által vezérelhető, ha azt a backlight kulcsszavas argumentumban adjuk át.
Példa – a kamera tükrözése az OpenMV LCD Shield SSD1351 OLED-jére:
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())
Konstruktorok¶
- 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)¶
widthSPI LCD szélessége képpontban (1..32767).heightSPI LCD magassága képpontban (1..32767).refreshLCD frissítési frekvenciája hertzben (1..120). Az SPI órajel sebességét vezérli.bgrállítsa True értékre a vörös és kék csatornák felcseréléséhez.byte_swapállítsa True értékre az LCD-re küldött RGB565 képpont-bájtok felcseréléséhez.hmirrorállítsa True értékre a kijelző kimenetének vízszintes tükrözéséhez.vflipállítsa True értékre a kijelző kimenetének függőleges tükrözéséhez.triple_bufferha True, a képernyő frissítései nem blokkolóvá válnak, cserébe a megjelenítési méret háromszorosát igénylik a RAM-ban. Az alapértelmezett a kártyától függ (SDRAM-mal rendelkező kártyákon bekapcsolt).controllercsak kulcsszavas. Adjon át egy vezérlőchip osztálypéldányt, hogy a kijelzővel együtt inicializálódjon. Ha meg van adva, a vezérlőinit,display_on,display_offésram_writemetódusai (ha léteznek) hívódnak meg a beépített parancsok helyett.backlightcsak kulcsszavas. Adjon át egy használandó háttérvilágítás-vezérlő modult. Alapértelmezetten a háttérvilágítás egy GPIO lábon keresztül vezérelhető.- 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¶
Megjeleníti az
imageképet a bal felső sarkával az(x, y)helyen. Kép helyett elérési út karakterlánc is átadható, hogy egyetlen lépésben betöltse és kirajzolja.x_scalex tengely menti méretezési tényező. A negatív értékek vízszintesen tükröznek. Ha azy_scaleel van hagyva, azx_scaleértékét követi a képarány megőrzése érdekében.y_scaley tengely menti méretezési tényező. A negatív értékek függőlegesen tükröznek (triple_buffer=Trueszükséges). Ha azx_scaleel van hagyva, azy_scaleértékét követi.roia forráskép kirajzolandó érdeklődési terület téglalapja(x, y, w, h).rgb_channelaz RGB565 forrásképből kinyerendő RGB csatorna (0=R, 1=G, 2=B, -1=mind). Tartomány: -1..2.alphaa kép átlátszatlansága. A 0 teljesen átlátszó (fekete), a 255 átlátszatlan. Tartomány: 0..255.color_paletteszínpaletta enum (pl.image.PALETTE_RAINBOW) vagy egy 256 képpontos RGB565 kép, amely a forrás szürkeárnyalatos értékén színkereső táblaként szolgál. Azrgb_channelkinyerés után kerül alkalmazásra.alpha_palette256 képpontos szürkeárnyalatos kép, amely képpontonkénti alfa-kereső táblaként szolgál, és a forrás szürkeárnyalatos értéke alapján modulálja azalphaértékét.hinta következő flag-ek logikai VAGY-a:image.AREA: Terület-alapú méretezés használata kicsinyítéskor.image.BILINEAR: Bilineáris méretezés használata.image.BICUBIC: Bikubikus méretezés használata.image.CENTER: A kép középre igazítása a kijelzőn (a méretezés után).image.HMIRROR: A kép vízszintes tükrözése.image.VFLIP: A kép függőleges tükrözése.image.TRANSPOSE: A kép transzponálása (x/y felcserélése).image.EXTRACT_RGB_CHANNEL_FIRST: Azrgb_channelkinyerés alkalmazása a méretezés előtt.image.APPLY_COLOR_PALETTE_FIRST: Acolor_palettealkalmazása a méretezés előtt.image.SCALE_ASPECT_KEEP: Méretezés úgy, hogy beférjen a kijelzőbe.image.SCALE_ASPECT_EXPAND: Méretezés úgy, hogy kitöltse a kijelzőt (vágással).image.SCALE_ASPECT_IGNORE: Méretezés úgy, hogy kitöltse a kijelzőt (nyújtással).image.ROTATE_90: Elforgatás 90 fokkal (VFLIP | TRANSPOSE).image.ROTATE_180: Elforgatás 180 fokkal (HMIRROR | VFLIP).image.ROTATE_270: Elforgatás 270 fokkal (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Feketére törli az LCD képernyőt.
display_offha True, kikapcsolja a kijelző logikáját ahelyett, hogy a képkocka-puffert törölné. Ezután a háttérvilágítást is le kell tiltani.
- backlight(value: int | None = None) int | None¶
valuemegadásával beállítja a háttérvilágítás intenzitását (0=ki..100=teljes). Argumentumok nélkül visszaadja az aktuális háttérvilágítási értéket.Hacsak nem adnak át
DACBacklightvagyPWMBacklightvezérlőt a konstruáláskor, a háttérvilágítás GPIO lábként vezérelhető, és csak 0 (ki) és nem nulla (be) között váltható.
- bus_write(cmd: int, args: int | bytes | None = None, *, dcs: bool = False) None¶
Elküldi a
cmdparancsot a kijelzőnek az SPI buszon keresztül, opcionálisanargs(egy int bájt vagy egy bájtpuffer) követésével. Adcsa DCS keretezést választja ki, ha a vezérlő támogatja.
- bus_read(cmd: int, len: int, args: int | bytes | None = None, *, dcs: bool = False) bytearray¶
Elküldi a
cmdparancsot az SPI buszon keresztül, éslenbájtot olvas vissza, amelyeketbytearrayformájában ad vissza. Azargsopcionálisan kerül kiírásra az olvasás előtt (egy int bájt vagy egy bájtpuffer). Adcsa DCS keretezést választja ki, ha a vezérlő támogatja.