class SPIDisplay – SPI Ekran Sürücüsü¶
SPIDisplay sınıfı, küçük SPI bağlantılı TFT ve OLED panelleri sürer – en yaygın olarak OpenMV LCD Shield üzerindeki SSD1351 128x160 RGB OLED’i. Sürücü, SPI veri yolunu ve bir GPIO yonga seçimi / DC hattını dahili olarak yönetir; bu nedenle çağıranların yalnızca panel geometrisini, yenileme hızını ve varsa yönlendirme bayraklarını yapılandırması gerekir. Panele özgü ilklendirme (yazmaç dizileri, RAM yazma çerçeveleme) controller anahtar sözcük argümanı aracılığıyla sağlanır – LCD Shield’i sürmek için bir SSD1351 örneği geçin ya da diğer paneller için kendi denetleyici sınıfınızı uygulayın.
Çerçeveler, bir image.Image ile write() çağrılarak sunulur. Sürücü kaynağı RGB565’e dönüştürür ve ölçeklemeyi, ROI’yi, paleti ve yönlendirme dönüşümlerini dahili olarak uygular; böylece çağıranın görüntüyü önceden boyutlandırması gerekmez. Arka aydınlatma parlaklığı basit bir aç/kapa GPIO’su olarak bırakılabilir (varsayılan) ya da backlight anahtar sözcük argümanı olarak biri geçilerek DACBacklight / PWMBacklight ile sürülebilir.
Örnek – kamerayı OpenMV LCD Shield’in SSD1351 OLED’ine yansıtmak:
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())
Kurucular¶
- 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 genişliği, piksel cinsinden (1..32767).heightSPI LCD yüksekliği, piksel cinsinden (1..32767).refreshLCD yenileme hızı, hertz cinsinden (1..120). SPI saat hızını denetler.bgrkırmızı ve mavi kanalları değiş tokuş etmek için True olarak ayarlayın.byte_swapLCD’ye gönderilen RGB565 piksel baytlarını değiş tokuş etmek için True olarak ayarlayın.hmirrorekran çıkışını yatay olarak aynalamak için True olarak ayarlayın.vflipekran çıkışını dikey olarak çevirmek için True olarak ayarlayın.triple_bufferTrue ise, RAM’de ekran boyutunun 3 katı maliyetiyle ekran güncellemelerini bloklamayan hale getirir. Varsayılan değer karta bağlıdır (SDRAM’li kartlarda açık).controlleryalnızca anahtar sözcük. Ekranla birlikte ilklendirmek üzere bir denetleyici yonga sınıfı örneği geçin. Sağlandığında, yerleşik komutlar yerine denetleyicinininit,display_on,display_offveram_writeyöntemleri (varsa) çağrılır.backlightyalnızca anahtar sözcük. Kullanılacak bir arka aydınlatma denetleyici modülü geçin. Varsayılan olarak arka aydınlatma bir GPIO pini üzerinden denetlenir.- byte_swap() bool¶
RGB565 piksellerinin baytları ters çevrilmiş olarak gönderilip gönderilmediğini döndürür.
- 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¶
imagegörüntüsünü sol üst köşesi(x, y)konumunda olacak şekilde görüntüler. Bir görüntü yerine bir yol dizesi geçilerek görüntü tek adımda yüklenip çizilebilir.x_scalex ekseni ölçek çarpanı. Negatif değerler yatay olarak çevirir.y_scaleatlanırsa en boy oranını korumak içinx_scaledeğerini izler.y_scaley ekseni ölçek çarpanı. Negatif değerler dikey olarak çevirir (triple_buffer=Truegerektirir).x_scaleatlanırsay_scaledeğerini izler.roiçizilecek kaynak görüntünün ilgi bölgesi (ROI) dikdörtgeni(x, y, w, h).rgb_channelbir RGB565 kaynak görüntüsünden ayıklanacak RGB kanalı (0=R, 1=G, 2=B, -1=tümü). Aralık: -1..2.alphagörüntünün opaklığı. 0 tümüyle saydamdır (siyah), 255 opaktır. Aralık: 0..255.color_paletterenk paleti sabiti (örneğinimage.PALETTE_RAINBOW) ya da kaynağın gri tonlama değeri üzerinde renk arama tablosu olarak kullanılan 256 piksellik bir RGB565 görüntüsü.rgb_channelayıklamasından sonra uygulanır.alpha_palettekaynak gri tonlama değerine görealphadeğerini modüle eden, piksel başına alfa arama tablosu olarak kullanılan 256 piksellik bir gri tonlama görüntüsü.hintbayrakların mantıksal VEYA’sı:image.AREA: Küçültme yaparken alan ölçeklemesi kullanın.image.BILINEAR: Çift doğrusal (bilinear) ölçekleme kullanın.image.BICUBIC: Çift kübik (bicubic) ölçekleme kullanın.image.CENTER: Görüntüyü ekranda ortalayın (ölçeklemeden sonra).image.HMIRROR: Görüntüyü yatay olarak aynalayın.image.VFLIP: Görüntüyü dikey olarak çevirin.image.TRANSPOSE: Görüntüyü devrik hale getirin (x/y’yi değiştirin).image.EXTRACT_RGB_CHANNEL_FIRST:rgb_channelayıklamasını ölçeklemeden önce uygulayın.image.APPLY_COLOR_PALETTE_FIRST:color_palettepaletini ölçeklemeden önce uygulayın.image.SCALE_ASPECT_KEEP: Ekranın içine sığacak şekilde ölçekleyin.image.SCALE_ASPECT_EXPAND: Ekranı dolduracak şekilde ölçekleyin (kırparak).image.SCALE_ASPECT_IGNORE: Ekranı dolduracak şekilde ölçekleyin (gererek).image.ROTATE_90: 90 derece döndürün (VFLIP | TRANSPOSE).image.ROTATE_180: 180 derece döndürün (HMIRROR | VFLIP).image.ROTATE_270: 270 derece döndürün (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
LCD ekranını siyaha temizler.
display_offTrue ise, çerçeve arabelleğini temizlemek yerine ekran mantığını kapatır. Ardından arka aydınlatma da devre dışı bırakılmalıdır.
- backlight(value: int | None = None) int | None¶
valueile arka aydınlatma yoğunluğunu ayarlar (0=kapalı..100=tam). Argümansız çağrıldığında geçerli arka aydınlatma değerini döndürür.Kuruluş sırasında bir
DACBacklightveyaPWMBacklightdenetleyicisi geçilmedikçe, arka aydınlatma bir GPIO pini olarak sürülür ve yalnızca 0 (kapalı) ile sıfırdan farklı (açık) arasında gider.
- bus_write(cmd: int, args: int | bytes | None = None, *, dcs: bool = False) None¶
cmdkomutunu SPI veri yolu üzerinden ekrana gönderir, isteğe bağlı olarak ardındanargs(bir int bayt veya bir bayt arabelleği) ile.dcs, denetleyici tarafından desteklendiğinde DCS çerçevelemeyi seçer.
- bus_read(cmd: int, len: int, args: int | bytes | None = None, *, dcs: bool = False) bytearray¶
cmdkomutunu SPI veri yolu üzerinden gönderir ve gerilenbayt okuyarak bunları birbytearrayolarak döndürür.argsokumadan önce isteğe bağlı olarak yazılır (bir int bayt veya bir bayt arabelleği).dcs, denetleyici tarafından desteklendiğinde DCS çerçevelemeyi seçer.