v4.5.0¶
A v4.5.0 é uma versão maior. O antigo módulo lcd foi substituído por um módulo display unificado com backends separados para SPI / paralelo / DSI / TV, foi adicionado suporte à placa Arduino Giga, e chegou uma vaga de funcionalidades para controlo de ecrã, toque e sensor. Existem várias alterações de rutura — leia-as abaixo.
Destaques¶
Novo módulo
display— substitui olcdpor backends unificadosSPIDisplay/RGBDisplay/DSIDisplay/TVDisplay.Suporte à placa Arduino Giga.
Novo hardware de ecrã/toque — ecrãs DSI em STM32 H7, TFP410 DVI/HDMI, HDMI/DVI CEC, painéis RGB ST7701, e toque capacitivo GT911 / FT5X06.
Novos controlos 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).Rutura:
lcd→display,lcd_touch→ft5x06, pinos LED renomeados — consulte as alterações de rutura.
Novas funcionalidades¶
Backends de ecrã —
DisplayData(leitura DDC/EDID), um serializadorTFP410DVI/HDMI, suporte a ecrã MIPI-DSI em STM32 H7, um controladorcecpara HDMI/DVI, e uma biblioteca Pythondisplaycom um assistente de inicialização de painel RGBST7701.Toque — novo controlador de toque capacitivo de 5 pontos
GT911(read_points()/read_id()/reset()).Extensão
machine— uma bibliotecamachinecongelável com uma classe auxiliarmachine.LED, e um novo métodomachine.LED.value([v]).Controlos 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 OV7670, esensor.disable_delays()para ignorar atrasos de estabilização da câmara e permitir reconfiguração mais rápida.i.MX RT —
sensor.set_xclk_frequency()aceita agora qualquer frequência (ajustando ao divisor CSI válido mais próximo) e os módulos SPIlcd/tv/firforam ativados no RT1060.
Outras alterações 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 de câmara verifica e valida agora múltiplos endereços de dispositivo, suportando placas com vários dispositivos no barramento.
Correções de erros¶
Câmara e sensores:
Corrigida a precisão do cálculo de ganho em muitos sensores (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), exposição/binning de colunas MT9V0xx, exposição OV5640, e janelamento VGA OV7670.
O STM32 descarta agora fotogramas de transposição corrompidos em vez de devolver imagens inválidas.
Processamento de imagem:
Corrigido um overflow de inteiro que afetava operações de imagem / FIR / ToF / LCD / TV, instruções de vírgula flutuante
vcvtm/vcvtpinválidas no Cortex-M4 (fast_floorf/fast_ceilf), um erro de escalonamento in-place na conversãoimage.to_*(), e corrupção de cache de desenho DMA2D.
Ecrã e sistema:
Corrigidos o temporizador e o modo retrato do ecrã DSI,
micro_speechlisten()na Nicla Vision / Portenta H7, o interruptor de utilizador STM32 (pyb.Switch), e suporte ao barramento I2C4.
Hardware e suporte a placas¶
Arduino Giga — nova placa, com mapeamentos de pinos Arduino nomeados e um conjunto completo de exemplos.
OpenMV RT1060 — módulos SPI LCD, TV e FIR térmico ativados.
Arduino Nano 33 BLE Sense — pinos LED.
Alterações de rutura da API¶
Ruturas de API visíveis pelo utilizador entre v4.4.3 e v4.5.0. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.
Cada alteração está marcada com o seu impacto:
maior — a maioria dos scripts que a usavam precisa de edições.
menor — API restrita; apenas afeta scripts que a usavam.
comportamento — mesma API, resultados diferentes; rever scripts ajustados.
As alterações estão agrupadas por impacto nessa ordem. Se pretende apenas portar o seu código, salte para a lista de verificação de migração no final. Cada hash de commit liga ao seu diff no GitHub.
Módulo lcd substituído por display (maior)¶
O antigo módulo lcd foi removido e substituído por um módulo display unificado dividido em backends SPIDisplay (escudo LCD SPI), RGBDisplay / paralelo, DSIDisplay (MIPI-DSI) e TVDisplay, com uma API comum. Os scripts devem passar de import lcd para o módulo display e construir o objeto de backend adequado.
Módulo de toque, pinos LED e controladores incluídos (menor)¶
O módulo genérico lcd_touch foi substituído por um módulo de controlador de toque capacitivo FT5X06 dedicado. Os nomes dos pinos LED foram renomeados para consistência entre todas as placas (os scripts que referenciam os nomes antigos devem ser atualizados). Os controladores IMU/sensor incluídos hts221 / lps22h / lsm6dsox / lsm9ds1 foram substituídos pelas versões da micropython-lib oficial, cujas APIs diferem ligeiramente (os exemplos incluídos foram atualizados em conformidade).
Controlos de sensor não suportados passam a alertar (comportamento)¶
sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() e set_auto_blc() imprimem agora um aviso em vez de lançar um RuntimeError quando o sensor ativo não suporta o controlo, permitindo que o mesmo script funcione com sensores de capacidades diferentes. O código que dependia de capturar a exceção deve ser atualizado.
Commit: dbf4996f2
Lista de verificação de migração¶
Para uma portabilidade limpa para a v4.5.0, o trabalho típico é:
Substituir o uso de
import lcdpelo novo módulodisplaye o backend adequado (a alteração do módulo display).Trocar
lcd_touchporFT5X06, atualizar quaisquer nomes antigos de pinos LED, e rever as APIs dos controladores IMU originais (as alterações de toque/pino/controlador).Substituir
try/except RuntimeErrorem torno de controlos de sensor não suportados por verificações de capacidade (a alteração de controlo de sensor).