class SPIDisplay – SPI-näytön ajuri¶
SPIDisplay-luokka ohjaa pieniä SPI-liitäntäisiä TFT- ja OLED-näyttöjä – yleisimmin OpenMV LCD Shieldin SSD1351 128x160 RGB-OLED-näyttöä. Ajuri hallitsee SPI-väylää sekä GPIO-pohjaista chip-select- / DC-linjaa sisäisesti, joten kutsujan tarvitsee vain määrittää näytön geometria, virkistystaajuus ja mahdolliset orientaatioliput. Näyttökohtainen alustus (rekisterisekvenssit, RAM-kirjoituskehystys) toimitetaan controller-avainsana-argumentin kautta – välitä SSD1351-instanssi ohjataksesi LCD Shieldiä, tai toteuta oma ohjainluokkasi muille näytöille.
Kehykset näytetään kutsumalla write()-metodia image.Image-objektin kanssa. Ajuri muuntaa lähteen RGB565-muotoon ja soveltaa skaalauksen, ROI:n, palettimuunnokset ja orientaatiomuunnokset sisäisesti, joten kutsujan ei tarvitse esimitoittaa kuvaa. Taustavalon kirkkaus voidaan jättää yksinkertaiseksi on/off-GPIO:ksi (oletus) tai ohjata DACBacklight- / PWMBacklight-ohjaimella välittämällä sellainen backlight-avainsana-argumenttina.
Esimerkki – peilaa kamera OpenMV LCD Shieldin SSD1351-OLED-näytölle:
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())
Konstruktorit¶
- 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:n leveys pikseleinä (1..32767).heightSPI-LCD:n korkeus pikseleinä (1..32767).refreshLCD:n virkistystaajuus hertseinä (1..120). Ohjaa SPI-kellotaajuutta.bgraseta arvoon True vaihtaaksesi punainen ja sininen kanava keskenään.byte_swapaseta arvoon True vaihtaaksesi LCD:lle lähetettävät RGB565-pikselitavut keskenään.hmirroraseta arvoon True peilataksesi näyttöulostulon vaakasuunnassa.vflipaseta arvoon True kääntääksesi näyttöulostulon pystysuunnassa.triple_bufferjos True, tekee näytön päivityksistä lukkiutumattomia 3-kertaisen näyttökoon RAM-kustannuksella. Oletus riippuu kortista (päällä korteilla, joissa on SDRAM).controllervain avainsanana. Välitä ohjainpiiriluokan instanssi alustaaksesi sen näytön ohella. Kun se on annettu, ohjaimeninit-,display_on-,display_off- jaram_write-metodeja (jos ne ovat olemassa) kutsutaan sisäänrakennettujen komentojen sijaan.backlightvain avainsanana. Välitä käytettävä taustavalo-ohjainmoduuli. Oletuksena taustavaloa ohjataan GPIO-nastan kautta.- 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¶
Näyttää
image-kuvan, jonka vasen yläkulma on kohdassa(x, y). Kuvan sijaan voidaan välittää polkumerkkijono kuvan lataamiseksi ja piirtämiseksi yhdellä askeleella.x_scalex-akselin skaalauskerroin. Negatiiviset arvot peilaavat vaakasuunnassa. Josy_scalejätetään pois, se seuraax_scale-arvoa kuvasuhteen säilyttämiseksi.y_scaley-akselin skaalauskerroin. Negatiiviset arvot kääntävät pystysuunnassa (vaatiitriple_buffer=True). Josx_scalejätetään pois, se seuraay_scale-arvoa.roilähdekuvan kohdealueen suorakulmio(x, y, w, h), joka piirretään.rgb_channelRGB-kanava, joka poimitaan RGB565-lähdekuvasta (0=R, 1=G, 2=B, -1=kaikki). Vaihteluväli: -1..2.alphakuvan läpinäkyvyys. 0 on täysin läpinäkyvä (musta), 255 on läpinäkymätön. Vaihteluväli: 0..255.color_paletteväripaletti-enum (esim.image.PALETTE_RAINBOW) tai 256-pikselinen RGB565-kuva, jota käytetään värihakutauluna lähteen harmaasävyarvoon. Sovelletaanrgb_channel-poiminnan jälkeen.alpha_palette256-pikselinen harmaasävykuva, jota käytetään pikselikohtaisena alfahakutauluna, joka moduloialpha-arvoa lähteen harmaasävyarvon perusteella.hintlippujen looginen TAI:image.AREA: Käytä aluekohtaista skaalausta pienennettäessä.image.BILINEAR: Käytä bilineaarista skaalausta.image.BICUBIC: Käytä bikuubista skaalausta.image.CENTER: Keskitä kuva näytölle (skaalauksen jälkeen).image.HMIRROR: Peilaa kuva vaakasuunnassa.image.VFLIP: Käännä kuva pystysuunnassa.image.TRANSPOSE: Transponoi kuva (vaihda x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Sovellargb_channel-poiminta ennen skaalausta.image.APPLY_COLOR_PALETTE_FIRST: Sovellacolor_paletteennen skaalausta.image.SCALE_ASPECT_KEEP: Skaalaa mahtumaan näytön sisään.image.SCALE_ASPECT_EXPAND: Skaalaa täyttämään näyttö (rajaten).image.SCALE_ASPECT_IGNORE: Skaalaa täyttämään näyttö (venyttäen).image.ROTATE_90: Kierrä 90 astetta (VFLIP | TRANSPOSE).image.ROTATE_180: Kierrä 180 astetta (HMIRROR | VFLIP).image.ROTATE_270: Kierrä 270 astetta (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Tyhjentää LCD-näytön mustaksi.
display_offjos True, sammuttaa näyttölogiikan sen sijaan että tyhjentäisi kehyspuskurin. Taustavalo tulisi myös poistaa käytöstä jälkeenpäin.
- backlight(value: int | None = None) int | None¶
Kun
valueon annettu, asettaa taustavalon voimakkuuden (0=pois..100=täysi). Ilman argumentteja palauttaa nykyisen taustavaloarvon.Ellei konstruktorin yhteydessä välitetä
DACBacklight- taiPWMBacklight-ohjainta, taustavaloa ohjataan GPIO-nastana ja se menee vain välillä 0 (pois) ja nollasta poikkeava (päällä).
- bus_write(cmd: int, args: int | bytes | None = None, *, dcs: bool = False) None¶
Lähettää
cmd-komennon näytölle SPI-väylän kautta, valinnaisesti seurattunaargs-argumenteilla (int-tavu tai tavupuskuri).dcsvalitsee DCS-kehystyksen, kun ohjain tukee sitä.
- bus_read(cmd: int, len: int, args: int | bytes | None = None, *, dcs: bool = False) bytearray¶
Lähettää
cmd-komennon SPI-väylän kautta ja lukeelentavua takaisin palauttaen nebytearray-tyyppisenä.argskirjoitetaan valinnaisesti ennen lukua (int-tavu tai tavupuskuri).dcsvalitsee DCS-kehystyksen, kun ohjain tukee sitä.