class SPIDisplay – SPI-displaydrivrutin

Klassen SPIDisplay driver små SPI-anslutna TFT- och OLED-paneler – oftast SSD1351 128x160 RGB-OLED:en på OpenMV LCD Shield. Drivrutinen äger SPI-bussen och en GPIO chip-select-/DC-linje internt, så anropare konfigurerar endast panelens geometri, uppdateringsfrekvens och eventuella orienteringsflaggor. Panelspecifik initiering (registersekvenser, RAM-skrivramning) tillhandahålls via nyckelordsargumentet controller – skicka en SSD1351-instans för att driva LCD Shield, eller implementera din egen styrkretsklass för andra paneler.

Bildrutor visas genom att anropa write() med en image.Image. Drivrutinen konverterar källan till RGB565 och tillämpar skalning, ROI, palett och orienteringstransformationer internt, så anroparen behöver inte förskala bilden. Bakgrundsbelysningens ljusstyrka kan lämnas som ett enkelt på/av-GPIO (standard) eller drivas av DACBacklight / PWMBacklight genom att skicka en sådan som nyckelordsargumentet backlight.

Exempel – spegla kameran på OpenMV LCD Shields SSD1351-OLED:

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

Konstruktorer

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:ns bredd i pixlar (1..32767).

height SPI-LCD:ns höjd i pixlar (1..32767).

refresh LCD-uppdateringsfrekvens i hertz (1..120). Styr SPI-klockfrekvensen.

bgr ställ in på True för att byta plats på de röda och blå kanalerna.

byte_swap ställ in på True för att byta om RGB565-pixelbyten som skickas till LCD:n.

hmirror ställ in på True för att spegla displayutmatningen horisontellt.

vflip ställ in på True för att vända displayutmatningen vertikalt.

triple_buffer om True görs uppdateringar av skärmen icke-blockerande, till priset av 3X displaystorleken i RAM. Standardvärdet beror på kortet (på för kort med SDRAM).

controller endast nyckelord. Skicka en instans av en styrkretsklass för att initiera den tillsammans med displayen. När den anges anropas styrenhetens metoder init, display_on, display_off och ram_write (om de finns) i stället för de inbyggda kommandona.

backlight endast nyckelord. Skicka en modul för styrning av bakgrundsbelysning som ska användas. Som standard styrs bakgrundsbelysningen via ett GPIO-stift.

width() int

Returnerar skärmens bredd.

height() int

Returnerar skärmens höjd.

refresh() int

Returnerar uppdateringsfrekvensen.

bgr() bool

Returnerar om de röda och blå kanalerna är ombytta.

byte_swap() bool

Returnerar om RGB565-pixlar skickas med ombytta byte.

triple_buffer() bool

Returnerar om trippelbuffring är aktiverad.

framesize() int

Returnerar den konfigurerade framesize-identifieraren.

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

Visar image med dess övre vänstra hörn vid (x, y). En sökvägssträng kan skickas i stället för en bild för att läsa in och rita den i ett steg.

x_scale skalfaktor för x-axeln. Negativa värden vänder horisontellt. Om y_scale utelämnas följer den x_scale för att bevara bildförhållandet.

y_scale skalfaktor för y-axeln. Negativa värden vänder vertikalt (kräver triple_buffer=True). Om x_scale utelämnas följer den y_scale.

roi intresseområdets rektangel (x, y, w, h) av källbilden som ska ritas.

rgb_channel RGB-kanal som ska extraheras ur en RGB565-källbild (0=R, 1=G, 2=B, -1=alla). Intervall: -1..2.

alpha bildens ogenomskinlighet. 0 är helt genomskinlig (svart), 255 är ogenomskinlig. Intervall: 0..255.

color_palette färgpalett-enum (t.ex. image.PALETTE_RAINBOW) eller en RGB565-bild på 256 pixlar som används som en färguppslagstabell på gråskalevärdet hos källan. Tillämpas efter rgb_channel-extraktion.

alpha_palette gråskalebild på 256 pixlar som används som en alfauppslagstabell per pixel som modulerar alpha baserat på källans gråskalevärde.

hint logisk ELLER av flaggorna:

clear(display_off: bool = False) None

Rensar LCD-skärmen till svart.

display_off om True stängs displaylogiken av i stället för att bildbufferten rensas. Bakgrundsbelysningen bör även inaktiveras efteråt.

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

Med value ställs bakgrundsbelysningens intensitet in (0=av..100=full). Utan argument returneras det aktuella bakgrundsbelysningsvärdet.

Om inte en DACBacklight- eller PWMBacklight-styrenhet skickas vid konstruktion drivs bakgrundsbelysningen som ett GPIO-stift och går endast från 0 (av) till skilt från noll (på).

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

Skickar cmd till displayen över SPI-bussen, eventuellt följt av args (en int-byte eller en buffert med byte). dcs väljer DCS-ramning när det stöds av styrenheten.

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

Skickar cmd över SPI-bussen och läser tillbaka len byte, och returnerar dem som en bytearray. args skrivs eventuellt före läsningen (en int-byte eller en buffert med byte). dcs väljer DCS-ramning när det stöds av styrenheten.

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

Utför en styrenhetsspecifik ioctl cmd med valfritt arg. Genererar ValueError om den underliggande displayen inte stöder ioctl.