v4.5.0¶
v4.5.0 é uma versão importante. O antigo módulo lcd foi substituído por um módulo display unificado com backends SPI / paralelo / DSI / TV separados, foi adicionado suporte à placa Arduino Giga e chegou uma onda de recursos de display, toque e controle de sensor. Há várias mudanças incompatíveis — leia-as abaixo.
Destaques¶
Novo módulo
display— substitui olcdpor backendsSPIDisplay/RGBDisplay/DSIDisplay/TVDisplayunificados.Suporte à placa Arduino Giga.
Novo hardware de display/toque — displays DSI no STM32 H7, TFP410 DVI/HDMI, CEC HDMI/DVI, painéis RGB ST7701 e toque capacitivo GT911 / FT5X06.
Novos controles de sensor — calibração de nível de preto, modo noturno e
sensor.disable_delays(); transposição muito mais rápida (~5x) e morfologia (~2,5x).Incompatível:
lcd→display,lcd_touch→ft5x06, pinos de LED renomeados — veja as mudanças incompatíveis.
Novos recursos¶
Backends de display —
DisplayData(leitura DDC/EDID), um serializador DVI/HDMITFP410, suporte a display MIPI-DSI no STM32 H7, um drivercecHDMI/DVI e uma biblioteca Pythondisplaycom um auxiliar de inicialização para o painel RGBST7701.Toque — novo driver de toque capacitivo de 5 pontos
GT911(read_points()/read_id()/reset()).Extensão do
machine— uma bibliotecamachinecongelável com uma classe auxiliarmachine.LEDe um novo métodomachine.LED.value([v]).Controles de sensor —
sensor.set_auto_blc(enable, regs=None)/sensor.get_blc_regs()(calibração de nível de preto),IOCTL_SET_NIGHT_MODE/IOCTL_GET_NIGHT_MODE(OV7725/OV5640), hmirror/vflip no OV7670 esensor.disable_delays()para pular os atrasos de estabilização da câmera e obter reconfiguração mais rápida.i.MX RT —
sensor.set_xclk_frequency()agora aceita qualquer frequência (ajustando para o divisor CSI válido mais próximo) e os móduloslcd/tvSPI /firforam habilitados no RT1060.
Outras mudanças e melhorias¶
Operações de imagem muito mais rápidas — a transposição de imagem é ~5x mais rápida e
image.morph()é ~2,5x mais rápida.A sondagem do barramento da câmera agora varre e valida múltiplos endereços de dispositivo, suportando placas com vários dispositivos no barramento.
Correções de bugs¶
Câmera e sensores:
Corrigida a precisão do cálculo de ganho em muitos sensores (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), a exposição / binning de colunas do MT9V0xx, a exposição do OV5640 e o janelamento VGA do OV7670.
O STM32 agora descarta quadros de transposição corrompidos em vez de retornar imagens ruins.
Processamento de imagem:
Corrigido um estouro de inteiro que afetava operações de imagem / FIR / ToF / LCD / TV, instruções de ponto flutuante
vcvtm/vcvtpinválidas no Cortex-M4 (fast_floorf/fast_ceilf), um bug de escala in-place na conversãoimage.to_*()e corrupção de cache de desenho do DMA2D.
Display e sistema:
Corrigidos o timing e o modo retrato do display DSI, o
listen()domicro_speechno Nicla Vision / Portenta H7, o botão de usuário do STM32 (pyb.Switch) e o suporte ao barramento I2C4.
Hardware e suporte a placas¶
Arduino Giga — nova placa, com mapeamentos nomeados de pinos do Arduino e um conjunto completo de exemplos.
OpenMV RT1060 — módulos LCD SPI, TV e térmico FIR habilitados.
Arduino Nano 33 BLE Sense — pinos de LED.
Mudanças incompatíveis na API¶
Quebras de API visíveis ao usuário entre a v4.4.3 e a v4.5.0. Escopo: módulos C de Python em modules/ e bibliotecas Python em scripts/libraries/.
Cada mudança é marcada com seu impacto:
major — a maioria dos scripts que o usavam precisa de edições.
minor — API restrita; afeta apenas scripts que a usavam.
behavior — mesma API, resultados diferentes; reavalie scripts ajustados.
As mudanças estão agrupadas por impacto nessa ordem. Se você só quer portar seu código, vá para a lista de verificação de migração no final. Cada hash de commit leva ao seu diff no GitHub.
Módulo lcd substituído por display (major)¶
O antigo módulo lcd foi removido e substituído por um módulo display unificado dividido nos backends SPIDisplay (shield LCD SPI), RGBDisplay / paralelo, DSIDisplay (MIPI-DSI) e TVDisplay, com uma API comum. Os scripts devem trocar import lcd pelo módulo display e construir o objeto de backend apropriado.
Módulo de toque, pinos de LED e drivers incluídos (minor)¶
O módulo genérico lcd_touch foi substituído por um módulo de driver de toque capacitivo dedicado FT5X06. Os nomes dos pinos de LED foram renomeados para consistência em todas as placas (scripts que referenciam os nomes antigos de pinos de LED devem ser atualizados). Os drivers de IMU/sensor incluídos hts221 / lps22h / lsm6dsox / lsm9ds1 foram substituídos pelas versões upstream do micropython-lib, cujas APIs diferem ligeiramente (os exemplos incluídos foram atualizados para corresponder).
Controles de sensor não suportados agora avisam (behavior)¶
sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() e set_auto_blc() agora exibem um aviso em vez de lançar um RuntimeError quando o sensor ativo não suporta o controle, de modo que o mesmo script possa rodar em sensores com capacidades diferentes. Código que dependia de capturar a exceção precisa ser atualizado.
Commit: dbf4996f2
Lista de verificação de migração¶
Para um port limpo para a v4.5.0, o trabalho típico é:
Substitua o uso de
import lcdpelo novo módulodisplaye pelo backend apropriado (a mudança do módulo display).Troque
lcd_touchporFT5X06, atualize quaisquer nomes antigos de pinos de LED e reavalie as APIs dos drivers de IMU upstream (as mudanças de toque/pino/driver).Substitua
try/except RuntimeErrorem torno de controles de sensor não suportados por verificações de capacidade (a mudança de controle de sensor).