class SPIDisplay -- مشغّل عرض SPI¶
تشغّل الفئة SPIDisplay لوحات TFT وOLED الصغيرة المتصلة عبر SPI -- وأكثرها شيوعًا شاشة SSD1351 128x160 RGB OLED على OpenMV LCD Shield. يمتلك المشغّل ناقل SPI ودبوس GPIO لاختيار الشريحة / خط DC داخليًا، لذا لا يحتاج المستدعون سوى إلى تهيئة هندسة اللوحة ومعدل التحديث وأي أعلام اتجاه. تُورَّد تهيئة اللوحة الخاصة (تسلسلات السجلات، تأطير الكتابة إلى RAM) عبر الوسيط المفتاحي controller -- مرّر نسخة SSD1351 لتشغيل LCD Shield، أو نفّذ فئة متحكم خاصة بك للوحات أخرى.
تُعرَض الإطارات باستدعاء write() مع كائن image.Image. يحوّل المشغّل المصدر إلى RGB565 ويطبّق التحجيم ومنطقة الاهتمام واللوحة اللونية وتحويلات الاتجاه داخليًا، لذا لا يحتاج المستدعي إلى ضبط حجم الصورة مسبقًا. يمكن ترك سطوع الإضاءة الخلفية كدبوس GPIO بسيط بنظام تشغيل/إطفاء (افتراضيًا) أو تشغيله عبر DACBacklight / PWMBacklight بتمرير أحدها كوسيط مفتاحي backlight.
مثال -- عكس الكاميرا على شاشة SSD1351 OLED الخاصة بـ 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())
المُنشئات¶
- 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 بالبكسل (1..32767).heightارتفاع شاشة SPI LCD بالبكسل (1..32767).refreshمعدل تحديث شاشة LCD بالهرتز (1..120). يتحكم في معدل ساعة SPI.bgrاضبطه على True لتبديل قناتي الأحمر والأزرق.byte_swapاضبطه على True لتبديل بايتات بكسل RGB565 المرسلة إلى شاشة LCD.hmirrorاضبطه على True لعكس خرج العرض أفقيًا.vflipاضبطه على True لقلب خرج العرض رأسيًا.triple_bufferإذا كان True فإنه يجعل تحديثات الشاشة غير حاجبة مقابل استهلاك ثلاثة أضعاف حجم العرض في ذاكرة RAM. تعتمد القيمة الافتراضية على اللوحة (مفعّلة للوحات المزودة بـ SDRAM).controllerمفتاحي فقط. مرّر نسخة من فئة شريحة المتحكم لتهيئتها مع العرض. عند توفيره، تُستدعى دوال المتحكمinitوdisplay_onوdisplay_offوram_write(إن وُجدت) بدلًا من الأوامر المدمجة.backlightمفتاحي فقط. مرّر وحدة متحكم الإضاءة الخلفية لاستخدامها. افتراضيًا، يُتحكَّم في الإضاءة الخلفية عبر دبوس GPIO.- 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¶
يعرض
imageبزاويتها العلوية اليسرى عند(x, y). يمكن تمرير سلسلة مسار بدلًا من صورة لتحميلها ورسمها في خطوة واحدة.x_scaleمعامل تحجيم المحور x. القيم السالبة تقلب أفقيًا. إذا حُذفy_scale، فإنه يتبعx_scaleللحفاظ على نسبة العرض إلى الارتفاع.y_scaleمعامل تحجيم المحور y. القيم السالبة تقلب رأسيًا (يتطلبtriple_buffer=True). إذا حُذفx_scale، فإنه يتبعy_scale.roiصفّ منطقة الاهتمام المستطيلة(x, y, w, h)من الصورة المصدر المراد رسمها.rgb_channelقناة RGB المراد استخراجها من صورة مصدر RGB565 (0=R، 1=G، 2=B، -1=الكل). المدى: -1..2.alphaعتامة الصورة. 0 شفافة تمامًا (سوداء)، 255 معتمة. المدى: 0..255.color_paletteتعداد للوحة لونية (مثلimage.PALETTE_RAINBOW) أو صورة RGB565 من 256 بكسل تُستخدم كجدول بحث لوني على قيمة تدرج الرمادي للمصدر. تُطبَّق بعد استخراجrgb_channel.alpha_paletteصورة بتدرج الرمادي من 256 بكسل تُستخدم كجدول بحث ألفا لكل بكسل يعدّلalphaبناءً على قيمة تدرج الرمادي للمصدر.hintOR منطقي للأعلام:image.AREA: استخدام تحجيم المساحة عند التصغير.image.BILINEAR: استخدام التحجيم الثنائي الخطي.image.BICUBIC: استخدام التحجيم الثنائي التكعيبي.image.CENTER: توسيط الصورة على العرض (بعد التحجيم).image.HMIRROR: عكس الصورة أفقيًا.image.VFLIP: قلب الصورة رأسيًا.image.TRANSPOSE: تبديل محاور الصورة (تبادل x/y).image.EXTRACT_RGB_CHANNEL_FIRST: تطبيق استخراجrgb_channelقبل التحجيم.image.APPLY_COLOR_PALETTE_FIRST: تطبيقcolor_paletteقبل التحجيم.image.SCALE_ASPECT_KEEP: التحجيم للملاءمة داخل العرض.image.SCALE_ASPECT_EXPAND: التحجيم لملء العرض (مع الاقتصاص).image.SCALE_ASPECT_IGNORE: التحجيم لملء العرض (مع التمدد).image.ROTATE_90: تدوير بمقدار 90 درجة (VFLIP | TRANSPOSE).image.ROTATE_180: تدوير بمقدار 180 درجة (HMIRROR | VFLIP).image.ROTATE_270: تدوير بمقدار 270 درجة (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
يمسح شاشة LCD إلى اللون الأسود.
display_offإذا كان True، يُطفئ منطق العرض بدلًا من مسح مخزن الإطارات. ينبغي أيضًا تعطيل الإضاءة الخلفية بعد ذلك.
- backlight(value: int | None = None) int | None¶
مع
value، يضبط شدة الإضاءة الخلفية (0=مطفأة..100=كاملة). دون وسائط، يُرجع قيمة الإضاءة الخلفية الحالية.ما لم يُمرَّر متحكم
DACBacklightأوPWMBacklightعند الإنشاء، تُشغَّل الإضاءة الخلفية كدبوس GPIO ولا تتجاوز 0 (مطفأة) إلى قيمة غير صفرية (مضاءة).
- bus_write(cmd: int, args: int | bytes | None = None, *, dcs: bool = False) None¶
يرسل
cmdإلى العرض عبر ناقل SPI، متبوعًا اختياريًا بـargs(بايت عدد صحيح أو مخزن مؤقت من البايتات). يختارdcsتأطير DCS عند دعمه من المتحكم.