quinta-feira, outubro 22, 2015

Display OLED com interface I2C - Parte 2

Neste post vamos examinar a conexão do displayzinho OLED a um Raspberry Pi.


Existem algumas bibliotecas disponíveis para displays baseados no controlador SSD1306:

ArduiPi_SSD1306 (C++)

Adaptação para o Raspberry Pi da biblioteca da Adafruit para o Arduino.
https://github.com/hallard/ArduiPi_SSD1306

ArduiPi_OLED (C++)

Expansão da biblioteca acima para suportar outros controladores (SH1106, SSD1327 e SSD1308).
https://github.com/hallard/ArduiPi_OLED

Adafruit_Python_SSD1306 (Python)

Biblioteca Python da Adafruit
https://github.com/adafruit/Adafruit_Python_SSD1306

Um cuidado ao usar estas bibliotecas é que elas suportam vários tamanhos de display e conexão tanto via SPI como I2C. Lembrando, no meu caso, o display é 128x64 pontos e usa conexão I2C com o endereço 0x3C.


Para variar um pouco, vamos usar C++, com a ArduiPi_OLED. A conexão do display é igual ao que vimos no display LCD:

O formato do display é outro, mas vou reusar a figura.
O nosso velho conhecido "sudo i2cdetect -y 1" permite conferir que o display está respondendo no endereço 0x3C.

Agora é instalar a biblioteca. Tem instruções detalhadas no blog do autor, os comandos que eu usei (pois já tinha o I2C habilitado e algumas bibliotecas instaladas) foram:

sudo apt-get install libi2c-dev
git clone https://github.com/hallard/ArduiPi_OLED
cd ArduiPi_OLED
sudo make
cd examples
make

Se algo der errado, provavelmente falta alguma biblioteca. Execute todos os comandos no blog do autor da ArduiPi_OLED. Quando der certo, podemos rodar o exemplo:

sudo ./oled_demo -o 3

Existe um pequeno detalhe. A biblioteca assume que o display tem um sinal de Reset e que ele foi ligado ao GPIO 25. No meu caso o display não tem este sinal e o pino do Raspberry ficou desconectado. Nada que atrapalhe, mas seria mais elegante poder informar à biblioteca que não tem o sinal de Reset. Fica para depois.

2 comentários:

Renato disse...

Como implementar uma chamada para esse driver em um código Python pra rodar no Raspberry Pi 3B?

Daniel Quadros disse...

Renato, se você quer usar Python, o mais simples é usar a biblioteca da Adafruit.