Aula 14: Texto no display OLED

Como vimos na aula anterior, as interfaces de comunicação presentes na Raspberry Pi facilitam bastante na hora de utilizar componentes mais complexos. Nesta aula vamos utilizar a comunicação I2C para utilizar um display OLED.

Foto do programa

O display OLED (Diodo Orgânico Emissor de Luz – Organic Light-Emitting Diode) é um display de alto contraste, sendo uma opção muito utilizada por quem busca visualizar pouca informação com bastante nitidez.

Montagem do circuito

Durante a montagem do circuito vamos precisar alimentar o display (3,3 V), conectar os pinos de referência (terra) e fazer a conexão própria da comunicação I2C, SDA da placa com o SDA do display e mesmo procedimento com os pinos de SCL.

É interessante fazer a montagem com a placa desconectada e só ligá-la após checar todas as conexões.

Habilitando o I2C

Conforme vimos na aula passada, precisamos habilitar a comunicação I2C, utilizando o comando:

sudo raspi-config

No menu, selecione a opção “5 – Interfacing Options“.

No próximo menu, selecione a opção I2C e a habilite selecionando sim (yes).

Você receberá a seguinte mensagem:

Verifique se a comunicação foi devidamente habilitada, utilizando o comando:

ls /dev/i2c*

Se o procedimento de habilitar o I2C foi feito corretamente, no terminal irá aparecer a porta disponível.

Com o I2C habilitado, podemos buscar o endereço do display na rede, utilizando o seguinte comando:

i2cdetect -y 1

Se o display está conectado corretamente, o terminal irá apresentar o seu endereço.

Perceba que o display neste caso apresenta o endereço 3C. Se não aparecer nenhum endereço, reveja suas conexões pois existe algum erro.

Instalando a biblioteca e a fonte

O display OLED conta com uma biblioteca que facilita seu uso. Para instalação corretamente a biblioteca, devemos executar estes dois comandos no terminal:

sudo python3 -m pip install --upgrade pip setuptools wheel
sudo pip3 install Adafruit-SSD1306

O primeiro comando atualiza o programa pip, habilitando a instalação correta da biblioteca.

A biblioteca conta com uma fonte padrão de texto, mas iremos utilizar uma fonte comum que encontramos na internet. Você pode baixá-la, basta utilizar o comando “wget” e o link onde disponibilizamos a fonte.

wget http://www.filipeflop.com/img/files/download/advanced_pixel_lcd-7.ttf

Programa

No programa utilizamos a biblioteca que instalamos anteriormente e algumas ferramentas de desenho da biblioteca PIL. Também é usada a fonte de texto baixada, ela deve estar na mesma pasta que o arquivo “.py”.

# Importa a biblioteca do display
import Adafruit_SSD1306
# Importa as ferramentas para o desenho
from PIL import Image, ImageDraw, ImageFont

# Seleciona o display
disp = Adafruit_SSD1306.SSD1306_128_32(rst=24)

# Inicializa o display
disp.begin()

# Limpa o display
disp.clear()
disp.display()

# Cria uma imagem em branco com a altura e largura do display
# Esta imagem sera modificada para o que desejamos
largura = disp.width
altura = disp.height
imagem = Image.new('1', (largura, altura))

# Cria uma variavel para desenhar na imagem criada
desenha = ImageDraw.Draw(imagem)

# Seleciona a fonte que baixamos e o tamanho utilizado
fonte = ImageFont.truetype('advanced_pixel_lcd-7.ttf',10)
# A fonte padrao tambem poderia ser usada
#fonte = ImageFont.load_default()

# Posicao X e Y de onde sera escrito
x = 8
y = 8

# Escreve a frase na imagem
desenha.text((x, y),'Kit Maker',  font=fonte, fill=255)
desenha.text((x+8, y+16),'RPi 3 B+', font=fonte, fill=255)

# Apresenta a imagem desenhada
disp.image(imagem)
disp.display()