v4.5.0

الإصدار v4.5.0 إصدار رئيسي. استُبدلت وحدة lcd القديمة بوحدة display موحّدة ذات خلفيات SPI / متوازية / DSI / TV منفصلة، وأُضيف دعم لوحة Arduino Giga، ووصلت موجة من ميزات العرض واللمس والتحكم في المستشعر. هناك عدة تغييرات قد تعطّل التوافق — اقرأها أدناه.

أبرز النقاط

  • وحدة display جديدة — تحل محل lcd بخلفيات موحّدة SPIDisplay / RGBDisplay / DSIDisplay / TVDisplay.

  • دعم لوحة Arduino Giga.

  • عتاد عرض/لمس جديد — شاشات DSI على STM32 H7، ومُسلسِل TFP410 DVI/HDMI، وHDMI/DVI CEC، ولوحات ST7701 RGB، ولمس سعوي GT911 / FT5X06.

  • عناصر تحكم جديدة في المستشعر — معايرة مستوى الأسود، والوضع الليلي، وsensor.disable_delays()؛ مع تبديل أسرع بكثير (~5x) ومورفولوجيا أسرع (~2.5x).

  • تغيير معطّل للتوافق: lcddisplay، وlcd_touchft5x06، وإعادة تسمية دبابيس LED — راجع التغييرات المعطّلة للتوافق.

ميزات جديدة

  • خلفيات العرضDisplayData (قراءة DDC/EDID)، ومُسلسِل TFP410 لـ DVI/HDMI، ودعم شاشات MIPI-DSI على STM32 H7، ومشغّل cec لـ HDMI/DVI، ومكتبة display بلغة Python مع دالة مساعِدة لتهيئة لوحة ST7701 RGB.

  • اللمس — مشغّل لمس سعوي جديد بخمس نقاط GT911 (read_points() / read_id() / reset()).

  • امتداد machine — مكتبة machine قابلة للتجميد مع صنف مساعِد machine.LED، وطريقة جديدة machine.LED.value([v]).

  • عناصر التحكم في المستشعرsensor.set_auto_blc(enable, regs=None) / sensor.get_blc_regs() (معايرة مستوى الأسود)، وIOCTL_SET_NIGHT_MODE / IOCTL_GET_NIGHT_MODE (OV7725/OV5640)، وانعكاس أفقي/رأسي لـ OV7670، وsensor.disable_delays() لتخطّي تأخيرات استقرار الكاميرا من أجل إعادة تهيئة أسرع.

  • i.MX RT — أصبحت sensor.set_xclk_frequency() تقبل أي تردد (مع المحاذاة إلى أقرب مقسّم CSI صالح)، وتم تمكين وحدات lcd / tv / fir عبر SPI على RT1060.

تغييرات وتحسينات أخرى

  • عمليات صور أسرع بكثير — تبديل الصورة أسرع بنحو 5 أضعاف وimage.morph() أسرع بنحو 2.5 ضعف.

  • أصبح فحص ناقل الكاميرا الآن يمسح ويتحقق من عدة عناوين أجهزة، بما يدعم اللوحات ذات الأجهزة المتعددة على الناقل.

إصلاحات الأخطاء

الكاميرا والمستشعرات:

  • تم إصلاح دقة حساب الكسب عبر العديد من المستشعرات (HM01B0، HM0360، MT9M114، MT9V0xx، OV2640، OV5640، OV7690، OV7725، OV9650، PAJ6100)، وتعريض/تجميع أعمدة MT9V0xx، وتعريض OV5640، وتأطير VGA لـ OV7670.

  • أصبح STM32 الآن يُسقط إطارات التبديل التالفة بدلاً من إرجاع صور معطوبة.

معالجة الصور:

  • تم إصلاح فيضان عددي صحيح يؤثر على عمليات الصورة / FIR / ToF / LCD / TV، وتعليمات النقطة العائمة غير الصالحة vcvtm/vcvtp على Cortex-M4 (fast_floorf/fast_ceilf)، وخطأ تحجيم في المكان داخل تحويل image.to_*()، وفساد ذاكرة رسم DMA2D المؤقتة.

العرض والنظام:

  • تم إصلاح توقيت شاشة DSI والوضع العمودي، وlisten() في micro_speech على Nicla Vision / Portenta H7، ومفتاح المستخدم في STM32 (pyb.Switch)، ودعم ناقل I2C4.

العتاد ودعم اللوحات

  • Arduino Giga — لوحة جديدة، مع تعيينات مسمّاة لدبابيس Arduino ومجموعة أمثلة كاملة.

  • OpenMV RT1060 — تم تمكين وحدات SPI LCD وTV وFIR الحرارية.

  • Arduino Nano 33 BLE Sense — دبابيس LED.

تغييرات معطّلة للتوافق في الـ API

تعطّلات API المرئية للمستخدم بين v4.4.3 و v4.5.0. النطاق: وحدات Python بلغة C في modules/ ومكتبات Python في scripts/libraries/.

كل تغيير موسوم بتأثيره:

  • رئيسي — معظم البرامج النصية التي استخدمته تحتاج إلى تعديلات.

  • ثانوي — API ضيّق؛ يؤثر فقط على البرامج النصية التي استخدمته.

  • سلوكي — نفس الـ API، نتائج مختلفة؛ أعد فحص البرامج النصية المضبوطة.

التغييرات مجمّعة حسب التأثير بهذا الترتيب. إذا كنت تريد فقط نقل شفرتك، انتقل إلى قائمة التحقق للترحيل في النهاية. كل تجزئة إيداع ترتبط بفرقها على GitHub.

استُبدلت وحدة lcd بوحدة display (رئيسي)

أُزيلت وحدة lcd القديمة واستُبدلت بوحدة display موحّدة مقسّمة إلى خلفيات SPIDisplay (درع SPI LCD)، وRGBDisplay / متوازية، وDSIDisplay (MIPI-DSI)، وTVDisplay بواجهة API مشتركة. يجب على البرامج النصية الانتقال من import lcd إلى وحدة display وإنشاء كائن الخلفية المناسب.

الإيداعات: 227824aac، 6c6336829

وحدة اللمس ودبابيس LED والمشغّلات المضمّنة (ثانوي)

استُبدلت وحدة lcd_touch العامة بوحدة مشغّل لمس سعوي مخصّصة FT5X06. وأُعيدت تسمية أسماء دبابيس LED لتحقيق الاتساق عبر جميع اللوحات (يجب على البرامج النصية التي تشير إلى أسماء دبابيس LED القديمة التحديث). واستُبدلت مشغّلات IMU/المستشعر المضمّنة hts221 / lps22h / lsm6dsox / lsm9ds1 بإصدارات micropython-lib الأصلية، التي تختلف واجهات API الخاصة بها قليلاً (وحُدّثت الأمثلة المضمّنة لتطابقها).

الإيداعات: 86ad6dcdb، 9344c3b74، 2b5b7963b

عناصر التحكم غير المدعومة في المستشعر تُصدر تحذيراً الآن (سلوكي)

أصبحت sensor.set_auto_gain()، وset_auto_exposure()، وset_auto_whitebal()، وset_auto_blc() الآن تطبع تحذيراً بدلاً من إثارة RuntimeError عندما لا يدعم المستشعر النشط عنصر التحكم، بحيث يمكن تشغيل البرنامج النصي نفسه عبر مستشعرات ذات قدرات مختلفة. يجب تحديث الشفرة التي اعتمدت على التقاط الاستثناء.

الإيداع: dbf4996f2

قائمة التحقق للترحيل

من أجل نقل نظيف إلى v4.5.0، العمل النموذجي هو:

  1. استبدل استخدام import lcd بوحدة display الجديدة والخلفية المناسبة (تغيير وحدة العرض).

  2. بدّل lcd_touch إلى FT5X06، وحدّث أي أسماء دبابيس LED قديمة، وأعد فحص واجهات API لمشغّل IMU الأصلي (تغييرات اللمس/الدبوس/المشغّل).

  3. استبدل try/except RuntimeError حول عناصر التحكم غير المدعومة في المستشعر بفحوص القدرات (تغيير التحكم في المستشعر).