Existem variações deste display com outros nomes nos pinos e com um sétimo pino. Não testei estes modelos, mas coloco no final o que descobri sobre eles.
Displays para todos os gostos |
Além dos vários posts incompletos na internet, a minha principal fonte foi o datasheet do controlador SSD1306.
A primeira coisa importante são as anotações na traseira do display, que indicam como configurar o modo de comunicação. O display vem de fábrica configurado para "SPI 4 pinos", para os outros modos você terá que usar um ferro de solda e se arriscar a danificar o display.
Configuração de fábrica |
Os códigos de exemplo estão no github para não ocuparem espaço demais aqui no post.
Modo "SPI 4 pinos"
Como dito, este é o modo padrão. As conexões a serem feitas são:
SCL: SCK da SPI do microcontrolador
SDA: MOSI da SPI do microcontrolador
D/C: Nível alto indica dados, nível baixo indica comando. Ligar a uma saída digital do microcontrolador.
Pois é, o "SPI 4 pinos" usa apenas três pinos. Como não existe transferência de dados do display para o microcontrolador, o pino MISO da SPI não é conectado.
Os 8 bits de dados devem ser shiftados do bit mais significativo ao menos. Os bits são registrados no display na borda de subida do clock. Isto corresponde ao modo 0 do SPI (padrão no Arduino).
Reparar a ausência de um pino de seleção. O display considera que os dados na SPI são sempre para ele. Ou seja, não dá para ligar outros dispositivos na SPI. A versão do display com conector de 7 pinos retira esta limitação acrescentando um sinal CS que precisa estar em nível baixo para o display ser selecionado.
O código que eu escrevi para testar com o Arduino é uma adaptação do que usei para a versão I2C. As conexões estão nos comentários.
Modo "SPI 3 pinos"
Para usar este modo precisamos mover o resistor R4 para R2 (ferro de solda, pinça, lupa e uma mão firme são necessários).
Alem de torto, R2 não é o resistor original, que caiu no .chão e não foi mais encontrado |
SCL: SCK da SPI do microcontrolador
SDA: MOSI da SPI do microcontrolador
Neste modo devem ser shiftados 9 bits, sendo o primeiro o indicador de dado ou comando. Por um lado esta opção reduz a quantidade de conexões, por outro tem o problema de usar a SPI para enviar 9 bits. Em muitos casos isto vai impedir o uso do hardware de SPI do microcontrolador, obrigando a usar "bit banging" (pulsar manualmente os sinais).
Código
Modo I2C
Para usar este modo precisamos mover o resistor R3 para R1 e fazer um curto no lugar de R8 (ferro de solda, pinça, lupa, um pedaço de fio de wire-wrap e uma mão firme são necessários).
Deu tanto trabalho para soldar direito que acabei danificando o display |
O sinal D/C passa a ser a seleção do endereço: nível baixo 0x3C, nível alto 0x3D. Os sinais SCL e SDA devem ser ligados ao sinais correspondentes no microcontrolador.
Feita a alteração, podemos usar o código do meu post original tomando o cuidado com os sinais RES e D/C.
Nenhum comentário:
Postar um comentário