Arduino - OLED
O display OLED (Organic Light-Emitting Diode, ou Diodo Orgânico Emissor de Luz) é uma alternativa ao display LCD. O OLED é superleve, quase tão fino quanto papel, flexível e produz uma imagem mais brilhante e nítida.
Neste tutorial, vamos aprender:
- Como usar o display OLED com o Arduino.
- Como exibir texto e números no OLED usando o Arduino
- Como centralizar vertical e horizontalmente texto e números no OLED
- Como desenhar no OLED usando o Arduino
- Como exibir imagens no OLED usando o Arduino
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Buy Note: If you want a bigger OLED display, use the 2.42 inch OLED Display 128x64 .
Sobre o Display OLED
Existem muitos tipos de display OLED. Eles diferem entre si na interface de comunicação, no tamanho e na cor:
- Interface de comunicação: I2C, SPI
- Tamanho: 128x64, 128×32...
- Cor: branco, azul, duas cores...

O SPI geralmente é mais rápido que o I2C, mas exige mais pinos do Arduino. Já o I2C exige apenas dois pinos e pode ser compartilhado com outros periféricos I2C. É uma troca entre o número de pinos e a velocidade de comunicação. A escolha é sua. Para o OLED com interface I2C, existem vários tipos de driver, como os drivers SSD1306 e SH1106. Este tutorial usa os displays OLED I2C SSD1306 de 128x64 e 128x32
Pinagem do Display OLED I2C
- Pino GND: deve ser conectado ao terra (GND) do Arduino
- Pino VCC: é a alimentação do display, que conectamos ao pino de 5 volts do Arduino.
- Pino SCL: é o pino de clock serial da interface I2C.
- Pino SDA: é o pino de dados serial da interface I2C.

※ Nota:
- A ordem dos pinos do módulo OLED pode variar entre fabricantes e tipos de módulo. SEMPRE use as identificações impressas no módulo OLED. Olhe com atenção!
- Este tutorial usa o display OLED com o driver SSD1306 I2C. Nós testamos com o display OLED da DIYables. Ele funciona sem nenhum problema.
Diagrama de Ligação
- Diagrama de ligação entre o Arduino e o OLED 128x64

This image is created using Fritzing. Click to enlarge image
- Diagrama de ligação entre o Arduino e o OLED 128x32

This image is created using Fritzing. Click to enlarge image
- A ligação real entre o Arduino e o OLED 128x64

This image is created using Fritzing. Click to enlarge image
- A ligação real entre o Arduino e o OLED 128x32

This image is created using Fritzing. Click to enlarge image
Se você usar outro Arduino que não seja o Uno, os pinos são diferentes. Consulte a tabela abaixo para outros Arduinos
| Módulo OLED | Arduino Uno, Nano | Arduino Mega |
|---|---|---|
| Vin | 5V | 5V |
| GND | GND | GND |
| SDA | A4 | 20 |
| SCL | A5 | 21 |
Como Usar o OLED com o Arduino
Instalar a biblioteca SSD1306 OLED
- Vá até o ícone Libraries na barra esquerda do Arduino IDE.
- Pesquise “SSD1306” e encontre a biblioteca SSD1306 da Adafruit
- Clique no botão Install para instalar a biblioteca.

- Será solicitado que você instale algumas outras dependências da biblioteca
- Clique no botão Install All para instalar todas as dependências da biblioteca.

Como programar o OLED
- Inclua a biblioteca
- Defina o tamanho da tela se for o OLED 123x64
- Defina o tamanho da tela se for o OLED 128x32
- Declare um objeto OLED SSD1306
- Na função setup(), inicialize o display OLED
- E então você pode exibir texto, imagens, desenhar linhas...
※ Nota:
A partir daqui, todos os códigos são fornecidos para o OLED 128x64, mas você pode adaptá-los facilmente para o OLED 128x32 alterando o tamanho da tela e ajustando as coordenadas, se necessário
Código Arduino - Exibir Texto no OLED
Abaixo estão algumas funções que você pode usar para exibir texto no OLED:
- oled.clearDisplay(): apaga todos os pixels
- oled.drawPixel(x,y, color): desenha um pixel nas coordenadas x,y
- oled.setTextSize(n): define o tamanho da fonte, suporta tamanhos de 1 a 8
- oled.setCursor(x,y): define as coordenadas onde o texto começa a ser escrito
- oled.setTextColor(WHITE): define a cor do texto
- oled.setTextColor(BLACK, WHITE): define a cor do texto e a cor de fundo
- oled.println(“message”): imprime os caracteres
- oled.println(number): imprime um número
- oled.println(number, HEX): imprime um número no formato hexadecimal
- oled.display(): chame este método para que as alterações tenham efeito
- oled.startscrollright(start, stop): rola o texto da esquerda para a direita
- oled.startscrollleft(start, stop): rola o texto da direita para a esquerda
- oled.startscrolldiagright(start, stop): rola o texto do canto inferior esquerdo para o canto superior direito
- oled.startscrolldiagleft(start, stop): rola o texto do canto inferior direito para o canto superior esquerdo
- oled.stopscroll(): para a rolagem
Como centralizar vertical e horizontalmente texto/números no OLED
Código Arduino - Desenhar no OLED
Código Arduino – Exibir Imagem
Para desenhar uma imagem no OLED, primeiro precisamos converter a imagem (de qualquer formato) em um array de bitmap. A conversão pode ser feita usando esta ferramenta Conversor de Imagem para Bitmap. Veja como converter uma imagem em um array de bitmap na imagem abaixo. Eu converti o ícone do Arduino em um array de bitmap.

Depois de converter, copie o código do array e atualize o array ArduinoIcon no código abaixo
※ Nota:
- O tamanho da imagem deve ser menor ou igual ao tamanho da tela.
- Se você quiser adaptar o código acima para o OLED 128x32, precisa redimensionar a imagem e alterar a largura/altura na função oled.drawBitmap();
Solução de Problemas do OLED
Se o OLED não exibir nada, siga esta lista de verificação:
- Verifique se a sua ligação está correta.
- Verifique se o seu OLED I2C usa o driver SSD1306.
- Verifique o endereço I2C do OLED executando o código I2C Address Scanner abaixo no Arduino
O resultado no Serial Monitor: