v4.5.0¶
v4.5.0 היא גרסה מרכזית. מודול ה-lcd הישן הוחלף במודול display מאוחד עם מנגנוני קצה (backends) נפרדים ל-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.
בקרות חיישן חדשות — כיול רמת שחור (black-level), מצב לילה, ו-
sensor.disable_delays(); שחלוף (transpose) מהיר בהרבה (~פי 5) ומורפולוגיה (~פי 2.5).שובר תאימות:
lcd←display,lcd_touch←ft5x06, פיני LED ששמם שונה — ראו את השינויים שוברי התאימות.
תכונות חדשות¶
מנגנוני קצה לתצוגה —
DisplayData(קריאת DDC/EDID), ממירTFP410DVI/HDMI, תמיכת תצוגת MIPI-DSI על STM32 H7, מנהל התקןcecל-HDMI/DVI, וספרייתdisplayב-Python עם פונקציית עזר לאתחול פאנלST7701RGB.מגע — מנהל התקן חדש למגע קיבולי בן 5 נקודות
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), hmirror/vflip ל-OV7670, ו-sensor.disable_delays()לדילוג על השהיות התייצבות המצלמה לתצורה מחדש מהירה יותר.i.MX RT —
sensor.set_xclk_frequency()מקבל כעת כל תדר (תוך הצמדה למחלק ה-CSI התקף הקרוב ביותר) ומודולי ה-lcd/tv/firשל SPI הופעלו על ה-RT1060.
שינויים ושיפורים נוספים¶
פעולות תמונה מהירות בהרבה — שחלוף (transpose) של תמונה מהיר ~פי 5 ו-
image.morph()מהיר ~פי 2.5.בדיקת אפיק המצלמה (camera-bus) סורקת ומאמתת כעת מספר כתובות התקן, ותומכת בלוחות עם כמה התקנים על האפיק.
תיקוני באגים¶
מצלמה וחיישנים:
תוקנה דיוק חישוב ההגבר (gain) במספר רב של חיישנים (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), חשיפה / איגוד עמודות (column-binning) ב-MT9V0xx, חשיפה ב-OV5640, וחלון VGA ב-OV7670.
STM32 מסלק כעת פריימים פגומים של שחלוף (transpose) במקום להחזיר תמונות פגומות.
עיבוד תמונה:
תוקנה גלישת מספר שלם (integer overflow) שהשפיעה על פעולות תמונה / FIR / ToF / LCD / TV, הוראות נקודה צפה
vcvtm/vcvtpלא תקפות על Cortex-M4 (fast_floorf/fast_ceilf), באג של שינוי קנה מידה במקום (in-place) בהמרתimage.to_*(), ושיבוש מטמון ציור של DMA2D.
תצוגה ומערכת:
תוקנו תזמון תצוגת DSI ומצב לאורך (portrait),
micro_speechlisten()על 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. היקף: מודולי C של Python ב-modules/ וספריות Python ב-scripts/libraries/.
כל שינוי מתויג לפי מידת ההשפעה שלו:
major — רוב הסקריפטים שהשתמשו בו זקוקים לעריכות.
minor — API צר; משפיע רק על סקריפטים שהשתמשו בו.
behavior — אותו API, תוצאות שונות; בדקו מחדש סקריפטים מכוונים.
השינויים מקובצים לפי השפעה בסדר זה. אם ברצונכם רק להסב את הקוד, דלגו אל רשימת ההסבה בסוף. כל hash של commit מקושר ל-diff שלו ב-GitHub.
מודול ה-lcd הוחלף ב-display (major)¶
מודול ה-lcd הישן הוסר והוחלף במודול display מאוחד המפוצל ל-SPIDisplay (מגן SPI LCD), RGBDisplay / מקבילי, DSIDisplay (MIPI-DSI), ומנגנוני קצה TVDisplay עם API משותף. סקריפטים חייבים לעבור מ-import lcd למודול display ולבנות את אובייקט מנגנון הקצה המתאים.
מודול מגע, פיני LED, ומנהלי התקנים מצורפים (minor)¶
מודול ה-lcd_touch הגנרי הוחלף במודול מנהל התקן ייעודי למגע קיבולי FT5X06. שמות פיני ה-LED שונו לעקביות בכל הלוחות (סקריפטים המתייחסים לשמות פיני ה-LED הישנים חייבים להתעדכן). מנהלי ההתקנים המצורפים ל-IMU/חיישן hts221 / lps22h / lsm6dsox / lsm9ds1 הוחלפו בגרסאות ה-upstream של micropython-lib, שה-API שלהן שונה מעט (הדוגמאות המצורפות עודכנו בהתאם).
בקרות חיישן שאינן נתמכות מציגות כעת אזהרה (behavior)¶
sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() ו-set_auto_blc() מדפיסים כעת אזהרה במקום להעלות RuntimeError כאשר החיישן הפעיל אינו תומך בבקרה, כך שאותו סקריפט יכול לרוץ על פני חיישנים בעלי יכולות שונות. קוד שהסתמך על תפיסת החריגה חייב להתעדכן.
Commit: dbf4996f2
רשימת הסבה¶
להסבה נקייה ל-v4.5.0 העבודה האופיינית היא:
החליפו את השימוש ב-
import lcdבמודולdisplayהחדש ובמנגנון הקצה המתאים (שינוי מודול ה-display).החליפו את
lcd_touchב-FT5X06, עדכנו כל שם פין LED ישן, ובדקו מחדש את ה-API של מנהלי ה-IMU של ה-upstream (שינויי המגע/פין/מנהל ההתקן).החליפו
try/except RuntimeErrorסביב בקרות חיישן שאינן נתמכות בבדיקות יכולת (שינוי בקרת החיישן).