class RGBDisplay – RGB-näytön ajuri

RGBDisplay-luokka ohjaa 24-bittisiä rinnakkaisia RGB-LCD-näyttöjä STM32:n LTDC (LCD-TFT) -ohjaimen kautta. LTDC suoratoistaa pikselit suoraan SDRAM-pohjaisesta kehyspuskurista valitulla pikselikellolla, joten korkeat virkistystaajuudet (jopa 120 Hz) ovat mahdollisia ilman suorittimen osallistumista.

OpenMV Cam Pure Thermal -kamerassa sama 24-bittinen rinnakkaisväylä syöttää myös piirilevyllä olevaa TFP410 HDMI -enkooderia, joten myös sen HDMI-ulostulo ohjataan tämän luokan kautta – käytä display_on=False pimentääksesi piirilevyn LCD-näytön samalla kun pikseleitä yhä syötetään enkooderille.

Näytön resoluutio valitaan framesize-parametrilla käyttäen display-moduulissa määriteltyjä vakioita (QVGA, VGA, WVGA, HD, FHD, …). Näyttökohtaiset alustussekvenssit kytketään controller-avainsana-argumentin kautta (esimerkiksi ST7701 ST7701-pohjaisille näytöille). Taustavalon kirkkautta ohjataan oletuksena yksinkertaisena GPIO-nastana, tai DACBacklight- / PWMBacklight-ohjaimella, jos sellainen välitetään backlight-parametrina.

Kehykset näytetään kutsumalla write()-metodia image.Image-objektin kanssa. Ajuri hoitaa RGB-muunnoksen, skaalauksen, ROI:n, palettimuunnokset ja orientaatiomuunnokset sisäisesti.

Esimerkki – peilaa kamera 480x272 -näytölle 60 Hz:n taajuudella:

import csi
import display
import image

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)

lcd = display.RGBDisplay(framesize=display.FHVGA, refresh=60)

while True:
    lcd.write(csi0.snapshot(), hint=image.SCALE_ASPECT_KEEP)

Konstruktorit

class display.RGBDisplay(framesize: int = display.FWVGA, refresh: int = 60, display_on: bool = True, triple_buffer: bool = True, portrait: bool = False, controller: object | None = None, backlight: object | None = None)

framesize Yksi vakiotuetuista resoluutioista (katso display-moduulin vakiot).

refresh Asettaa näytön virkistystaajuuden hertseinä (30-120). Tämä ohjaa RGB-LCD:n pikselikelloa.

display_on Ottaa käyttöön paikallisen LCD-ulostulon. Välitä False OpenMV Cam Pure Thermal -kamerassa, jonka 24-bittinen rinnakkaisväylä ohjaa sekä piirilevyn LCD-näyttöä että TFP410 HDMI -enkooderia – tämä pitää piirilevyn LCD-näytön pimennettynä samalla kun HDMI-enkooderia yhä syötetään. Muissa OpenMV Cam -kameroissa ei ole jaettua kohdetta, joten tämä voidaan jättää oletusarvoonsa.

triple_buffer Jos True, tekee näytön päivityksistä lukkiutumattomia 3-kertaisen näyttökoon RAM-kustannuksella.

portrait Vaihtaa kehyskoon leveyden ja korkeuden keskenään.

controller Välitä ohjainpiiriluokan instanssi alustaaksesi sen näytön ohella.

backlight Välitä käytettävän taustavalo-ohjainmoduulin instanssi. Oletuksena taustavaloa ohjataan GPIO-nastan kautta.

deinit() None

Vapauttaa luokan käyttämät I/O-nastat ja RAM-muistin. Tämä kutsutaan automaattisesti tuhoamisen yhteydessä.

width() int

Palauttaa näytön leveyden.

height() int

Palauttaa näytön korkeuden.

triple_buffer() bool

Palauttaa, onko kolmoispuskurointi käytössä.

bgr() bool

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

byte_swap() bool

Palauttaa, onko RGB565-pikselitavut vaihdettu ulostulossa.

framesize() int

Palauttaa kehyskokovakion, jolla näyttö määritettiin.

refresh() int

Palauttaa virkistystaajuuden.

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 mustaksi. Sammuta tämän jälkeen myös taustavalo varmistaaksesi, että näyttö menee mustaksi, sillä monet näytöt ovat valkoisia, kun vain taustavalo on päällä.

backlight(value: int | None = None) int

Asettaa LCD-näytön taustavalon himmennysarvon välillä 0 (pois) ja 100 (päällä). Älä anna argumentteja saadaksesi nykyisen taustavaloarvon.

Ellei konstruktorille välitetty DACBacklight- tai PWMBacklight-ohjainta, taustavaloa ohjataan GPIO-nastana ja se menee vain välillä 0 (pois) ja nollasta poikkeava (päällä).

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: image.Image | None = None, alpha_palette: image.Image | None = None, hint: int = 0) None

Näyttää image-kuvan, jonka vasen yläkulma alkaa sijainnista x, y. Kuvaobjektin sijaan voidaan välittää myös polkumerkkijono, jolloin kuva ladataan automaattisesti levyltä.

x_scale ohjaa, kuinka paljon näytettävää kuvaa skaalataan x-suunnassa. Jos tämä arvo on negatiivinen, kuva peilataan vaakasuunnassa. Jos y_scale ei ole määritelty, se vastaa x_scale-arvoa kuvasuhteen säilyttämiseksi.

y_scale ohjaa, kuinka paljon näytettävää kuvaa skaalataan y-suunnassa. Jos tämä arvo on negatiivinen, kuva käännetään pystysuunnassa (vaatii kolmoispuskuroinnin). Jos x_scale ei ole määritelty, se vastaa y_scale-arvoa kuvasuhteen säilyttämiseksi.

roi on näytettävän kuvan kohdealueen suorakulmiotuple (x, y, w, h).

rgb_channel on RGB-kanava (0=R, 1=G, 2=B), joka poimitaan RGB565-kuvasta ja renderöidään harmaasävynä. -1 poistaa kanavan poiminnan käytöstä.

alpha ohjaa, kuinka läpinäkymätön kuva on, välillä 0 (täysin läpinäkyvä / musta) ja 255 (läpinäkymätön).

color_palette RGB565-kuva, jossa on yhteensä 256 pikseliä, käytetään värihakutauluna syötekuvan harmaasävyarvoon. Sovelletaan rgb_channel-poiminnan jälkeen. Voi olla myös paletti-enum (esim. image.PALETTE_RAINBOW).

alpha_palette GRAYSCALE-kuva, jossa on yhteensä 256 pikseliä, käytetään pikselikohtaisena alfahakutauluna syötekuvan harmaasävyarvoon. Sovelletaan rgb_channel-poiminnan jälkeen.

hint on lippujen looginen TAI: