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)¶
widthSPI-LCD:ns bredd i pixlar (1..32767).heightSPI-LCD:ns höjd i pixlar (1..32767).refreshLCD-uppdateringsfrekvens i hertz (1..120). Styr SPI-klockfrekvensen.bgrställ in på True för att byta plats på de röda och blå kanalerna.byte_swapställ in på True för att byta om RGB565-pixelbyten som skickas till LCD:n.hmirrorställ in på True för att spegla displayutmatningen horisontellt.vflipställ in på True för att vända displayutmatningen vertikalt.triple_bufferom 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).controllerendast nyckelord. Skicka en instans av en styrkretsklass för att initiera den tillsammans med displayen. När den anges anropas styrenhetens metoderinit,display_on,display_offochram_write(om de finns) i stället för de inbyggda kommandona.backlightendast nyckelord. Skicka en modul för styrning av bakgrundsbelysning som ska användas. Som standard styrs bakgrundsbelysningen via ett GPIO-stift.- 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
imagemed 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_scaleskalfaktor för x-axeln. Negativa värden vänder horisontellt. Omy_scaleutelämnas följer denx_scaleför att bevara bildförhållandet.y_scaleskalfaktor för y-axeln. Negativa värden vänder vertikalt (krävertriple_buffer=True). Omx_scaleutelämnas följer deny_scale.roiintresseområdets rektangel(x, y, w, h)av källbilden som ska ritas.rgb_channelRGB-kanal som ska extraheras ur en RGB565-källbild (0=R, 1=G, 2=B, -1=alla). Intervall: -1..2.alphabildens ogenomskinlighet. 0 är helt genomskinlig (svart), 255 är ogenomskinlig. Intervall: 0..255.color_palettefä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 efterrgb_channel-extraktion.alpha_palettegråskalebild på 256 pixlar som används som en alfauppslagstabell per pixel som moduleraralphabaserat på källans gråskalevärde.hintlogisk ELLER av flaggorna:image.AREA: Använd ytskalning vid nedskalning.image.BILINEAR: Använd bilinjär skalning.image.BICUBIC: Använd bikubisk skalning.image.CENTER: Centrera bilden på displayen (efter skalning).image.HMIRROR: Spegla bilden horisontellt.image.VFLIP: Vänd bilden vertikalt.image.TRANSPOSE: Transponera bilden (byt x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Tillämpargb_channel-extraktion före skalning.image.APPLY_COLOR_PALETTE_FIRST: Tillämpacolor_paletteföre skalning.image.SCALE_ASPECT_KEEP: Skala så att den får plats inuti displayen.image.SCALE_ASPECT_EXPAND: Skala så att den fyller displayen (med beskärning).image.SCALE_ASPECT_IGNORE: Skala så att den fyller displayen (med utsträckning).image.ROTATE_90: Rotera 90 grader (VFLIP | TRANSPOSE).image.ROTATE_180: Rotera 180 grader (HMIRROR | VFLIP).image.ROTATE_270: Rotera 270 grader (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Rensar LCD-skärmen till svart.
display_offom 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
valueställs bakgrundsbelysningens intensitet in (0=av..100=full). Utan argument returneras det aktuella bakgrundsbelysningsvärdet.Om inte en
DACBacklight- ellerPWMBacklight-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
cmdtill displayen över SPI-bussen, eventuellt följt avargs(en int-byte eller en buffert med byte).dcsvä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 tillbakalenbyte, och returnerar dem som enbytearray.argsskrivs eventuellt före läsningen (en int-byte eller en buffert med byte).dcsväljer DCS-ramning när det stöds av styrenheten.