Uma compra por impulso na AliExpress, para atingir o mínimo do frete grátis, acabou me levando a um pequeno mistério: como usar o display desta placa?
Esta placa (e outras muito parecidas) é facilmente encontrada em várias lojas no AliExpress. Embora a descrição varie um pouco de anúncio para anúncio, em todos eles nenhuma informação importante sobre o display é passada. Tanto a resolução como o chip controlador são omitidos.
Uma busca encontrou esta pergunta e várias respostas, com referências aos chips SH1106 e SSD1306 (o chip que é usado nos mais conhecidos displays OLED de 128x64 pontos), resoluções de 128x64 e 72x40 e deslocamento da imagem visível dentro na memória do controlador. Localizei também um repositório no github com uma biblioteca específica para esta placa (construída a partir do driver para o SSD1306). A maioria das respostas é para uso com o MicroPython e foi isso que usei nos meus testes.
Neste ponto é bom lembrar que nem sempre as placas enviadas no AliExpress correspondem às fotos nos anúncios e não dá para identificar o modelo do display nas fotos. Após a placa inicial eu comprei mais duas em outra loja e as três placas são iguais.
Os datasheets do SH1106 e SSD1306 mostram algumas semelhanças e algumas diferenças nos comandos. Os meus primeiros testes aumentaram a minha confusão, pois eu não estava ressetando a placa entre um teste e outro. Ao final eu percebi que:
- Os exemplos usando o driver para o SH1106 não apresentam nada na tela, quando executados na placa recém ligada. Porém funcionam (parcial ou totalmente) se anteriormente eu rodei um exemplo com o driver para o SSD1306.
- Alguns exemplos apresentam imagem na tela com a posição inicial incorreta.
- O driver para SH1106 praticamente não envia comandos de configuração para o controlador, usando os valores default (que claramente são inadequados para este display)
- As diferenças entre o SSD1306 original e o alterado são mínimas. A principal é somar um deslocamento (offset) fixo nas coordenadas X e Y.
- O chip de controle do display é um SSD1306 ou muito parecido. Este chip possui internamente uma memória capaz de armazenar até 128x64 pontos
- A resolução do display é de 72x40 pontos
- A imagem do display fica deslocada na memória do controlador de 28 pontos na direção X e 24 pontos na direção Y (ou seja, está centrada horizontalmente e encostada na parte inferior da memória)
Nenhum comentário:
Postar um comentário