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)

width SPI-LCD:n leveys pikseleinä (1..32767).

height SPI-LCD:n korkeus pikseleinä (1..32767).

refresh LCD:n virkistystaajuus hertseinä (1..120). Ohjaa SPI-kellotaajuutta.

bgr aseta arvoon True vaihtaaksesi punainen ja sininen kanava keskenään.

byte_swap aseta arvoon True vaihtaaksesi LCD:lle lähetettävät RGB565-pikselitavut keskenään.

hmirror aseta arvoon True peilataksesi näyttöulostulon vaakasuunnassa.

vflip aseta arvoon True kääntääksesi näyttöulostulon pystysuunnassa.

triple_buffer jos True, tekee näytön päivityksistä lukkiutumattomia 3-kertaisen näyttökoon RAM-kustannuksella. Oletus riippuu kortista (päällä korteilla, joissa on SDRAM).

controller vain avainsanana. Välitä ohjainpiiriluokan instanssi alustaaksesi sen näytön ohella. Kun se on annettu, ohjaimen init-, display_on-, display_off- ja ram_write-metodeja (jos ne ovat olemassa) kutsutaan sisäänrakennettujen komentojen sijaan.

backlight vain avainsanana. Välitä käytettävä taustavalo-ohjainmoduuli. Oletuksena taustavaloa ohjataan GPIO-nastan kautta.

width() int

Palauttaa näytön leveyden.

height() int

Palauttaa näytön korkeuden.

refresh() int

Palauttaa virkistystaajuuden.

bgr() bool

Palauttaa, onko punainen ja sininen kanava vaihdettu keskenään.

byte_swap() bool

Palauttaa, lähetetäänkö RGB565-pikselit tavut käännettyinä.

triple_buffer() bool

Palauttaa, onko kolmoispuskurointi käytössä.

framesize() int

Palauttaa määritetyn kehyskokotunnisteen.

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_scale x-akselin skaalauskerroin. Negatiiviset arvot peilaavat vaakasuunnassa. Jos y_scale jätetään pois, se seuraa x_scale-arvoa kuvasuhteen säilyttämiseksi.

y_scale y-akselin skaalauskerroin. Negatiiviset arvot kääntävät pystysuunnassa (vaatii triple_buffer=True). Jos x_scale jätetään pois, se seuraa y_scale-arvoa.

roi lähdekuvan kohdealueen suorakulmio (x, y, w, h), joka piirretään.

rgb_channel RGB-kanava, joka poimitaan RGB565-lähdekuvasta (0=R, 1=G, 2=B, -1=kaikki). Vaihteluväli: -1..2.

alpha kuvan läpinäkyvyys. 0 on täysin läpinäkyvä (musta), 255 on läpinäkymätön. Vaihteluväli: 0..255.

color_palette väripaletti-enum (esim. image.PALETTE_RAINBOW) tai 256-pikselinen RGB565-kuva, jota käytetään värihakutauluna lähteen harmaasävyarvoon. Sovelletaan rgb_channel-poiminnan jälkeen.

alpha_palette 256-pikselinen harmaasävykuva, jota käytetään pikselikohtaisena alfahakutauluna, joka moduloi alpha-arvoa lähteen harmaasävyarvon perusteella.

hint lippujen looginen TAI:

clear(display_off: bool = False) None

Tyhjentää LCD-näytön mustaksi.

display_off jos 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 value on annettu, asettaa taustavalon voimakkuuden (0=pois..100=täysi). Ilman argumentteja palauttaa nykyisen taustavaloarvon.

Ellei konstruktorin yhteydessä välitetä DACBacklight- tai PWMBacklight-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 seurattuna args-argumenteilla (int-tavu tai tavupuskuri). dcs valitsee 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 lukee len tavua takaisin palauttaen ne bytearray-tyyppisenä. args kirjoitetaan valinnaisesti ennen lukua (int-tavu tai tavupuskuri). dcs valitsee DCS-kehystyksen, kun ohjain tukee sitä.

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

Suorittaa ohjainkohtaisen ioctl-komennon cmd valinnaisella arg-argumentilla. Nostaa ValueError-poikkeuksen, jos taustalla oleva näyttö ei tue ioctl-toimintoa.