v4.5.0

v4.5.0 es una versión importante. El antiguo módulo lcd se reemplazó por un módulo display unificado con backends SPI / paralelo / DSI / TV independientes, se añadió la placa Arduino Giga y llegó una oleada de funciones de pantalla, táctil y control de sensores. Hay varios cambios incompatibles — léelos a continuación.

Aspectos destacados

  • Nuevo módulo display — reemplaza a lcd con backends unificados SPIDisplay / RGBDisplay / DSIDisplay / TVDisplay.

  • Compatibilidad con la placa Arduino Giga.

  • Nuevo hardware de pantalla/táctil — pantallas DSI en STM32 H7, TFP410 DVI/HDMI, CEC HDMI/DVI, paneles RGB ST7701 y táctil capacitivo GT911 / FT5X06.

  • Nuevos controles de sensor — calibración de nivel de negro, modo nocturno y sensor.disable_delays(); transposición mucho más rápida (~5x) y morfología (~2,5x).

  • Incompatible: lcddisplay, lcd_touchft5x06, pines LED renombrados — consulta los cambios incompatibles.

Nuevas funciones

  • Backends de pantallaDisplayData (lectura DDC/EDID), un serializador DVI/HDMI TFP410, compatibilidad con pantallas MIPI-DSI en STM32 H7, un controlador cec HDMI/DVI y una biblioteca Python display con un asistente de inicialización de panel RGB ST7701.

  • Táctil — nuevo controlador táctil capacitivo de 5 puntos GT911 (read_points() / read_id() / reset()).

  • Extensión machine — una biblioteca machine congelable con una clase auxiliar machine.LED y un nuevo método machine.LED.value([v]).

  • Controles de sensorsensor.set_auto_blc(enable, regs=None) / sensor.get_blc_regs() (calibración de nivel de negro), IOCTL_SET_NIGHT_MODE / IOCTL_GET_NIGHT_MODE (OV7725/OV5640), hmirror/vflip en OV7670 y sensor.disable_delays() para omitir los retardos de estabilización de la cámara y lograr una reconfiguración más rápida.

  • i.MX RTsensor.set_xclk_frequency() ahora acepta cualquier frecuencia (ajustándola al divisor CSI válido más cercano) y se habilitaron los módulos SPI lcd / tv / fir en el RT1060.

Otros cambios y mejoras

  • Operaciones de imagen mucho más rápidas — la transposición de imágenes es ~5x más rápida e image.morph() es ~2,5x más rápida.

  • La detección del bus de cámara ahora escanea y valida varias direcciones de dispositivo, admitiendo placas con varios dispositivos en el bus.

Correcciones de errores

Cámara y sensores:

  • Se corrigió la precisión del cálculo de ganancia en muchos sensores (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), la exposición / agrupación de columnas del MT9V0xx, la exposición del OV5640 y el ventaneo VGA del OV7670.

  • STM32 ahora descarta los fotogramas transpuestos corruptos en lugar de devolver imágenes erróneas.

Procesamiento de imágenes:

  • Se corrigió un desbordamiento de enteros que afectaba a las operaciones de imagen / FIR / ToF / LCD / TV, instrucciones de punto flotante vcvtm/vcvtp no válidas en Cortex-M4 (fast_floorf/fast_ceilf), un error de escalado en el lugar en la conversión image.to_*() y la corrupción de la caché de dibujo DMA2D.

Pantalla y sistema:

  • Se corrigió la temporización de la pantalla DSI y el modo retrato, micro_speech listen() en Nicla Vision / Portenta H7, el interruptor de usuario del STM32 (pyb.Switch) y la compatibilidad con el bus I2C4.

Hardware y compatibilidad de placas

  • Arduino Giga — placa nueva, con asignaciones de pines Arduino con nombre y un conjunto completo de ejemplos.

  • OpenMV RT1060 — módulos LCD SPI, TV y térmico FIR habilitados.

  • Arduino Nano 33 BLE Sense — pines LED.

Cambios incompatibles en la API

Cambios de la API visibles para el usuario entre v4.4.3 y v4.5.0. Alcance: módulos C de Python en modules/ y bibliotecas Python en scripts/libraries/.

Cada cambio está etiquetado con su impacto:

  • major — la mayoría de los scripts que lo usaban necesitan modificaciones.

  • minor — API limitada; solo afecta a los scripts que la usaban.

  • behavior — misma API, resultados distintos; vuelve a revisar los scripts ajustados.

Los cambios se agrupan por impacto en ese orden. Si solo quieres portar tu código, ve directamente a la lista de verificación de migración al final. Cada hash de commit enlaza a su diff en GitHub.

Módulo lcd reemplazado por display (major)

El antiguo módulo lcd se eliminó y se reemplazó por un módulo display unificado dividido en los backends SPIDisplay (shield LCD SPI), RGBDisplay / paralelo, DSIDisplay (MIPI-DSI) y TVDisplay con una API común. Los scripts deben cambiar de import lcd al módulo display y construir el objeto de backend apropiado.

Commits: 227824aac, 6c6336829

Módulo táctil, pines LED y controladores incluidos (minor)

El módulo genérico lcd_touch se reemplazó por un módulo de controlador táctil capacitivo FT5X06 dedicado. Los nombres de los pines LED se renombraron por coherencia en todas las placas (los scripts que hagan referencia a los nombres antiguos de los pines LED deben actualizarse). Los controladores IMU/sensor incluidos hts221 / lps22h / lsm6dsox / lsm9ds1 se reemplazaron por las versiones de micropython-lib originales, cuyas API difieren ligeramente (los ejemplos incluidos se actualizaron para que coincidan).

Commits: 86ad6dcdb, 9344c3b74, 2b5b7963b

Los controles de sensor no admitidos ahora avisan (behavior)

sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() y set_auto_blc() ahora imprimen una advertencia en lugar de lanzar un RuntimeError cuando el sensor activo no admite el control, de modo que el mismo script puede ejecutarse en sensores con capacidades distintas. El código que dependía de capturar la excepción debe actualizarse.

Commit: dbf4996f2

Lista de verificación de migración

Para un porte limpio a v4.5.0, el trabajo habitual es:

  1. Reemplazar el uso de import lcd por el nuevo módulo display y el backend apropiado (el cambio del módulo display).

  2. Cambiar lcd_touch por FT5X06, actualizar cualquier nombre antiguo de pin LED y volver a revisar las API de los controladores IMU originales (los cambios de táctil/pines/controladores).

  3. Reemplazar try/except RuntimeError alrededor de los controles de sensor no admitidos por comprobaciones de capacidad (el cambio de control de sensor).