class SPIDisplay – SPI-displaystuurprogramma

De SPIDisplay-klasse stuurt kleine via SPI aangesloten TFT- en OLED-panelen aan – meestal de SSD1351 128x160 RGB-OLED op de OpenMV LCD Shield. Het stuurprogramma beheert de SPI-bus en een GPIO chip-select / DC-lijn intern, zodat aanroepers alleen de paneelgeometrie, verversingssnelheid en eventuele oriëntatievlaggen configureren. Paneelspecifieke initialisatie (registersequenties, RAM-write-framing) wordt geleverd via het sleutelwoordargument controller – geef een SSD1351-instantie mee om de LCD Shield aan te sturen, of implementeer je eigen controllerklasse voor andere panelen.

Frames worden weergegeven door write() aan te roepen met een image.Image. Het stuurprogramma converteert de bron naar RGB565 en past schalen, ROI, palet en oriëntatietransformaties intern toe, zodat de aanroeper de afbeelding niet vooraf op maat hoeft te brengen. De helderheid van de achtergrondverlichting kan een eenvoudige aan/uit-GPIO blijven (standaard) of worden aangestuurd door DACBacklight / PWMBacklight door een daarvan mee te geven als het sleutelwoordargument backlight.

Voorbeeld – de camera spiegelen naar de SSD1351-OLED van de OpenMV LCD Shield:

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())

Constructors

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-breedte in pixels (1..32767).

height SPI-LCD-hoogte in pixels (1..32767).

refresh LCD-verversingssnelheid in hertz (1..120). Regelt de SPI-kloksnelheid.

bgr stel in op True om de rode en blauwe kanalen te verwisselen.

byte_swap stel in op True om de RGB565-pixelbytes die naar het LCD worden gestuurd te verwisselen.

hmirror stel in op True om de displayuitvoer horizontaal te spiegelen.

vflip stel in op True om de displayuitvoer verticaal te spiegelen.

triple_buffer indien True worden updates van het scherm niet-blokkerend, ten koste van 3X de displaygrootte aan RAM. De standaardwaarde hangt af van het board (aan voor boards met SDRAM).

controller alleen als sleutelwoord. Geef een instantie van een controllerchipklasse mee om die samen met het display te initialiseren. Indien opgegeven, worden de methoden init, display_on, display_off en ram_write van de controller (indien aanwezig) aangeroepen in plaats van de ingebouwde commando’s.

backlight alleen als sleutelwoord. Geef een module voor de achtergrondverlichting mee die moet worden gebruikt. Standaard wordt de achtergrondverlichting via een GPIO-pin geregeld.

width() int

Geeft de breedte van het scherm terug.

height() int

Geeft de hoogte van het scherm terug.

refresh() int

Geeft de verversingssnelheid terug.

bgr() bool

Geeft terug of de rode en blauwe kanalen zijn verwisseld.

byte_swap() bool

Geeft terug of RGB565-pixels byte-omgekeerd worden verzonden.

triple_buffer() bool

Geeft terug of triple buffering is ingeschakeld.

framesize() int

Geeft de geconfigureerde framesize-identifier terug.

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

Geeft image weer met de linkerbovenhoek op (x, y). In plaats van een afbeelding kan een padstring worden meegegeven om deze in één stap te laden en te tekenen.

x_scale schaalfactor voor de x-as. Negatieve waarden spiegelen horizontaal. Als y_scale wordt weggelaten, volgt deze x_scale om de beeldverhouding te behouden.

y_scale schaalfactor voor de y-as. Negatieve waarden spiegelen verticaal (vereist triple_buffer=True). Als x_scale wordt weggelaten, volgt deze y_scale.

roi rechthoek van het aandachtsgebied (x, y, w, h) van de te tekenen bronafbeelding.

rgb_channel RGB-kanaal dat uit een RGB565-bronafbeelding wordt geëxtraheerd (0=R, 1=G, 2=B, -1=alle). Bereik: -1..2.

alpha ondoorzichtigheid van de afbeelding. 0 is volledig transparant (zwart), 255 is ondoorzichtig. Bereik: 0..255.

color_palette palet-enum (bijv. image.PALETTE_RAINBOW) of een RGB565-afbeelding van 256 pixels die als kleuropzoektabel wordt gebruikt op de grijswaarde van de bron. Wordt toegepast na de rgb_channel-extractie.

alpha_palette grijswaarden-afbeelding van 256 pixels die als per-pixel alpha-opzoektabel wordt gebruikt om alpha te moduleren op basis van de grijswaarde van de bron.

hint logische OR van de vlaggen:

clear(display_off: bool = False) None

Wist het LCD-scherm naar zwart.

display_off indien True, schakelt de displaylogica uit in plaats van de framebuffer te wissen. De achtergrondverlichting moet daarna ook worden uitgeschakeld.

backlight(value: int | None = None) int | None

Met value stelt het de intensiteit van de achtergrondverlichting in (0=uit..100=vol). Zonder argumenten geeft het de huidige waarde van de achtergrondverlichting terug.

Tenzij er een DACBacklight- of PWMBacklight-controller bij de constructie wordt meegegeven, wordt de achtergrondverlichting als een GPIO-pin aangestuurd en gaat deze alleen van 0 (uit) naar niet-nul (aan).

bus_write(cmd: int, args: int | bytes | None = None, *, dcs: bool = False) None

Stuurt cmd naar het display via de SPI-bus, optioneel gevolgd door args (een int-byte of een buffer met bytes). dcs selecteert DCS-framing wanneer dit door de controller wordt ondersteund.

bus_read(cmd: int, len: int, args: int | bytes | None = None, *, dcs: bool = False) bytearray

Stuurt cmd via de SPI-bus en leest len bytes terug, die als een bytearray worden teruggegeven. args wordt optioneel geschreven vóór het lezen (een int-byte of een buffer met bytes). dcs selecteert DCS-framing wanneer dit door de controller wordt ondersteund.

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

Voert een controllerspecifieke ioctl cmd uit met optioneel arg. Werpt ValueError als het onderliggende display geen ioctl ondersteunt.