class RGBDisplay – Driver pentru afișaje RGB

Clasa RGBDisplay controlează LCD-uri RGB paralele pe 24 de biți prin intermediul controllerului STM32 LTDC (LCD-TFT). LTDC transmite pixelii direct dintr-un framebuffer aflat în SDRAM la rata de ceas a pixelilor aleasă, astfel încât sunt posibile rate de reîmprospătare mari (până la 120 Hz) fără implicarea CPU-ului.

Pe OpenMV Cam Pure Thermal, aceeași magistrală paralelă pe 24 de biți alimentează și un codificator HDMI TFP410 integrat, astfel că ieșirea sa HDMI este controlată tot prin această clasă – folosiți display_on=False pentru a stinge LCD-ul integrat în timp ce continuați să transmiteți pixeli către codificator.

Rezoluția panoului este selectată prin framesize folosind constantele definite în modulul display (QVGA, VGA, WVGA, HD, FHD, …). Secvențele de inițializare specifice fiecărui panou sunt conectate prin argumentul cu cuvânt cheie controller (de exemplu ST7701 pentru panouri bazate pe ST7701). Luminozitatea iluminării de fundal este controlată în mod implicit ca un simplu GPIO sau prin DACBacklight / PWMBacklight dacă unul dintre acestea este transmis ca backlight.

Cadrele sunt afișate apelând write() cu o image.Image. Driverul gestionează intern conversia RGB, scalarea, ROI, paleta și transformările de orientare.

Exemplu – oglindirea camerei pe un panou de 480x272 la 60 Hz:

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)

Constructori

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 Una dintre rezoluțiile standard acceptate (consultați constantele modulului display).

refresh Setează rata de reîmprospătare a ecranului în herți (30-120). Aceasta controlează rata de ceas a pixelilor LCD-ului RGB.

display_on Activează ieșirea LCD locală. Transmiteți False pe OpenMV Cam Pure Thermal, a cărui magistrală paralelă pe 24 de biți controlează atât LCD-ul integrat, cât și codificatorul HDMI TFP410 – aceasta menține LCD-ul integrat stins în timp ce continuă să alimenteze codificatorul HDMI. Pe celelalte OpenMV Cam nu există o ieșire partajată, iar aceasta poate fi lăsată la valoarea sa implicită.

triple_buffer Dacă este True, face actualizările ecranului neblocante, cu prețul triplării dimensiunii afișajului în RAM.

portrait Interschimbă lățimea și înălțimea framesize.

controller Transmiteți o instanță a unei clase de cip controller pentru a o inițializa împreună cu afișajul.

backlight Transmiteți o instanță a unui modul controller de iluminare de fundal pe care să o folosiți. În mod implicit, iluminarea de fundal va fi controlată prin intermediul unui pin GPIO.

deinit() None

Eliberează pinii de I/O și RAM-ul utilizate de clasă. Acest lucru este apelat automat la distrugere.

width() int

Returnează lățimea ecranului.

height() int

Returnează înălțimea ecranului.

triple_buffer() bool

Returnează dacă triplul buffering este activat.

bgr() bool

Returnează dacă canalele roșu și albastru sunt interschimbate.

byte_swap() bool

Returnează dacă octeții pixelilor RGB565 sunt interschimbați la ieșire.

framesize() int

Returnează constanta framesize cu care a fost configurat afișajul.

refresh() int

Returnează rata de reîmprospătare.

clear(display_off: bool = False) None

Șterge ecranul LCD, făcându-l negru.

display_off dacă este True, oprește logica de afișare în loc să șteargă framebufferul, făcându-l negru. Ar trebui de asemenea să stingeți iluminarea de fundal după aceasta pentru a vă asigura că ecranul devine negru, deoarece multe afișaje sunt albe atunci când doar iluminarea de fundal este pornită.

backlight(value: int | None = None) int

Setează valoarea de atenuare a iluminării de fundal a LCD-ului, de la 0 (oprit) la 100 (pornit). Nu transmiteți niciun argument pentru a obține valoarea curentă a iluminării de fundal.

Cu excepția cazului în care un controller DACBacklight sau PWMBacklight a fost transmis constructorului, iluminarea de fundal este controlată ca un pin GPIO și va trece doar de la 0 (oprit) la o valoare diferită de zero (pornit).

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

Afișează o image al cărei colț din stânga sus începe la poziția x, y. În locul unui obiect imagine se poate transmite și un șir de cale pentru a încărca automat imaginea de pe disc.

x_scale controlează cât de mult este scalată imaginea afișată pe direcția x. Dacă această valoare este negativă, imaginea va fi răsturnată pe orizontală. Dacă y_scale nu este specificat, va corespunde cu x_scale pentru a menține raportul de aspect.

y_scale controlează cât de mult este scalată imaginea afișată pe direcția y. Dacă această valoare este negativă, imaginea va fi răsturnată pe verticală (necesită triplu buffering). Dacă x_scale nu este specificat, va corespunde cu y_scale pentru a menține raportul de aspect.

roi este tuplul dreptunghiular al regiunii de interes (x, y, w, h) din imaginea care urmează să fie afișată.

rgb_channel este canalul RGB (0=R, 1=G, 2=B) care urmează să fie extras dintr-o imagine RGB565 și redat în tonuri de gri. -1 dezactivează extragerea canalului.

alpha controlează cât de opacă este imaginea, de la 0 (complet transparentă / neagră) la 255 (opacă).

color_palette o imagine RGB565 de 256 de pixeli în total, utilizată ca tabel de căutare a culorilor pe valoarea în tonuri de gri a imaginii de intrare. Se aplică după extragerea rgb_channel. Poate fi de asemenea o enumerare de paletă (de exemplu image.PALETTE_RAINBOW).

alpha_palette o imagine GRAYSCALE de 256 de pixeli în total, utilizată ca tabel de căutare a transparenței per pixel pe valoarea în tonuri de gri a imaginii de intrare. Se aplică după extragerea rgb_channel.

hint este un SAU logic al indicatorilor: