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)¶
widthSPI-LCD-breedte in pixels (1..32767).heightSPI-LCD-hoogte in pixels (1..32767).refreshLCD-verversingssnelheid in hertz (1..120). Regelt de SPI-kloksnelheid.bgrstel in op True om de rode en blauwe kanalen te verwisselen.byte_swapstel in op True om de RGB565-pixelbytes die naar het LCD worden gestuurd te verwisselen.hmirrorstel in op True om de displayuitvoer horizontaal te spiegelen.vflipstel in op True om de displayuitvoer verticaal te spiegelen.triple_bufferindien 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).controlleralleen als sleutelwoord. Geef een instantie van een controllerchipklasse mee om die samen met het display te initialiseren. Indien opgegeven, worden de methodeninit,display_on,display_offenram_writevan de controller (indien aanwezig) aangeroepen in plaats van de ingebouwde commando’s.backlightalleen als sleutelwoord. Geef een module voor de achtergrondverlichting mee die moet worden gebruikt. Standaard wordt de achtergrondverlichting via een GPIO-pin geregeld.- 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
imageweer 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_scaleschaalfactor voor de x-as. Negatieve waarden spiegelen horizontaal. Alsy_scalewordt weggelaten, volgt dezex_scaleom de beeldverhouding te behouden.y_scaleschaalfactor voor de y-as. Negatieve waarden spiegelen verticaal (vereisttriple_buffer=True). Alsx_scalewordt weggelaten, volgt dezey_scale.roirechthoek van het aandachtsgebied(x, y, w, h)van de te tekenen bronafbeelding.rgb_channelRGB-kanaal dat uit een RGB565-bronafbeelding wordt geëxtraheerd (0=R, 1=G, 2=B, -1=alle). Bereik: -1..2.alphaondoorzichtigheid van de afbeelding. 0 is volledig transparant (zwart), 255 is ondoorzichtig. Bereik: 0..255.color_palettepalet-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 dergb_channel-extractie.alpha_palettegrijswaarden-afbeelding van 256 pixels die als per-pixel alpha-opzoektabel wordt gebruikt omalphate moduleren op basis van de grijswaarde van de bron.hintlogische OR van de vlaggen:image.AREA: Gebruik gebiedsschaling bij het verkleinen.image.BILINEAR: Gebruik bilineaire schaling.image.BICUBIC: Gebruik bicubische schaling.image.CENTER: Centreer de afbeelding op het display (na het schalen).image.HMIRROR: Spiegel de afbeelding horizontaal.image.VFLIP: Spiegel de afbeelding verticaal.image.TRANSPOSE: Transponeer de afbeelding (verwissel x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Pas dergb_channel-extractie toe vóór het schalen.image.APPLY_COLOR_PALETTE_FIRST: Pascolor_palettetoe vóór het schalen.image.SCALE_ASPECT_KEEP: Schaal zodat het binnen het display past.image.SCALE_ASPECT_EXPAND: Schaal zodat het display gevuld wordt (bijsnijden).image.SCALE_ASPECT_IGNORE: Schaal zodat het display gevuld wordt (uitrekken).image.ROTATE_90: Roteer met 90 graden (VFLIP | TRANSPOSE).image.ROTATE_180: Roteer met 180 graden (HMIRROR | VFLIP).image.ROTATE_270: Roteer met 270 graden (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Wist het LCD-scherm naar zwart.
display_offindien 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
valuestelt 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- ofPWMBacklight-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
cmdnaar het display via de SPI-bus, optioneel gevolgd doorargs(een int-byte of een buffer met bytes).dcsselecteert 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
cmdvia de SPI-bus en leestlenbytes terug, die als eenbytearrayworden teruggegeven.argswordt optioneel geschreven vóór het lezen (een int-byte of een buffer met bytes).dcsselecteert DCS-framing wanneer dit door de controller wordt ondersteund.