Arduino Nano - Display OLED SSD1309 128x64 | Tutorial do OLED I2C de 2,42 polegadas
Um display OLED (Organic Light-Emitting Diode) tem pixels que emitem luz própria, o que entrega pretos profundos, alto contraste e ângulos de visão amplos — uma ótima evolução em relação aos LCDs tradicionais. O SSD1309 é o CI driver comumente encontrado em módulos OLED I2C 128×64 de 2,42 polegadas (às vezes etiquetados como 2,4 polegadas).
Neste guia passo a passo, você vai aprender a conectar e programar o OLED SSD1309 128×64 com uma placa Arduino Nano usando a biblioteca DIYables_OLED_SSD1309. Especificamente, vamos abordar:
- Ligação do OLED SSD1309 de 2,42 polegadas ao Arduino Nano via I2C
- Impressão de texto e números na tela
- Centralização do texto vertical e horizontalmente
- Desenho de formas geométricas (linhas, retângulos, círculos, triângulos, retângulos arredondados)
- Exibição de imagens bitmap monocromáticas
- Rolagem por hardware em quatro direções
- Ajuste de contraste e redução do brilho do display
- Uso de fontes externas personalizadas da coleção de fontes do Adafruit GFX
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Display OLED SSD1309 de 2,42 Polegadas
O SSD1309 é um CI driver OLED CMOS de chip único projetado para painéis de matriz de pontos 128×64. Ele é compatível em registradores com o amplamente usado SSD1306, então muitos exemplos de código existentes funcionam com mudanças mínimas. As principais diferenças de hardware são:
- Sem charge pump integrado — o SSD1309 exige uma linha VCC externa, embora praticamente todas as placas breakout (incluindo os módulos de 2,42 polegadas e 2,4 polegadas) venham com um conversor boost na placa, então isso é transparente para você.
- Maior tolerância de tensão — o SSD1309 aceita até 16 V de VCC, enquanto o SSD1306 é limitado a cerca de 4,2 V.
O módulo OLED de 2,42 polegadas (2,4 polegadas) normalmente usa o driver SSD1309 e tem resolução de 128×64 pixels com interface I2C. A cor do painel (branco, azul, amarelo, verde ou de duas zonas) é determinada pelo material OLED físico e não pode ser controlada por software.
Este tutorial se comunica com o display pelo barramento I2C, que exige apenas dois fios de sinal (SDA e SCL) e pode compartilhar o barramento com outros periféricos I2C.
Pinagem do OLED SSD1309 (Módulo I2C)
- Pino GND: Deve ser conectado ao GND do Arduino Nano.
- Pino VCC: É a alimentação do display e deve ser conectado a 5V.
- Pino SCL: É o pino de clock serial da interface I2C. Conecte ao A5.
- Pino SDA: É o pino de dados serial da interface I2C. Conecte ao A4.

※ Nota:
- Os pinos do módulo OLED podem variar conforme o fabricante e o tipo. Use os rótulos impressos no módulo OLED. Olhe com atenção!
- Este tutorial usa o display OLED controlado pelo driver SSD1309 I2C. Nós o testamos com o display OLED da DIYables e ele funciona perfeitamente.
Diagrama de Ligação
- Diagrama de ligação entre o Arduino Nano e o OLED SSD1309 128x64

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Nano e outros componentes.
A tabela de ligação entre o Arduino Nano e o display OLED SSD1309:
| Módulo OLED | Arduino Nano |
|---|---|
| VCC | 5V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
Como Programar o Arduino Nano para o OLED SSD1309
Instalar a Biblioteca DIYables_OLED_SSD1309
A biblioteca DIYables_OLED_SSD1309 é feita especificamente para displays SSD1309 e estende a Adafruit_GFX para oferecer mais recursos gráficos.
- Clique no ícone Libraries na barra à esquerda da Arduino IDE.
- Pesquise por DIYables_OLED_SSD1309 e procure a biblioteca DIYables OLED SSD1309 da DIYables
- Clique no botão Install para instalar a biblioteca DIYables_OLED_SSD1309.

- Você será solicitado a instalar as dependências da biblioteca
- Instale todas as dependências clicando no botão Install All.

Passos de Programação
- Inclua as bibliotecas necessárias
- Defina as dimensões da tela
- Declare o objeto do display
- Inicialize o OLED no setup()
- Exiba o conteúdo
Código Arduino Nano — Hello World no OLED SSD1309
O ponto de partida mais simples: imprimir algumas linhas de texto em tamanhos diferentes.
Código Arduino Nano — Exibir Texto no OLED SSD1309
O exemplo a seguir demonstra mais recursos de texto — vários tamanhos, formatação de números e a macro F() para economizar RAM.
Referência de Funções Úteis do Display
Abaixo está uma lista de consulta rápida das funções mais usadas ao trabalhar com o OLED SSD1309 pela biblioteca DIYables:
- oled.clearDisplay() — limpa o frame buffer (todos os pixels apagados).
- oled.display() — transfere o buffer para o OLED para que as alterações fiquem visíveis.
- oled.drawPixel(x, y, color) — liga ou apaga um pixel individual.
- oled.setTextSize(n) — escala a fonte pelo fator *n* (1 = 6×8, 2 = 12×16, …, até 8).
- oled.setCursor(x, y) — move o cursor de texto para as coordenadas de pixel *(x, y)*.
- oled.setTextColor(SSD1309_PIXEL_ON) — apenas a cor de frente do texto (o fundo é transparente).
- oled.setTextColor(SSD1309_PIXEL_OFF, SSD1309_PIXEL_ON) — texto com uma cor de fundo explícita.
- oled.println("message") — imprime uma string e avança para a próxima linha.
- oled.println(number) — imprime um inteiro em decimal.
- oled.println(number, HEX) — imprime um inteiro em hexadecimal.
- oled.startscrollright(start, stop) — rolagem por hardware para a direita entre a página *start* e a página *stop*.
- oled.startscrollleft(start, stop) — rolagem por hardware para a esquerda.
- oled.startscrolldiagright(start, stop) — rolagem por hardware na diagonal para a direita.
- oled.startscrolldiagleft(start, stop) — rolagem por hardware na diagonal para a esquerda.
- oled.stopscroll() — interrompe qualquer rolagem por hardware ativa.
- oled.setContrast(value) — ajusta o brilho do display (0–255).
- oled.dim(true/false) — reduz rapidamente o display ao brilho mínimo ou restaura o contraste anterior.
- oled.invertDisplay(true/false) — inversão de cor em nível de hardware (pixels ligados ↔ pixels desligados).
Como Centralizar Texto Vertical e Horizontalmente no OLED SSD1309
Código Arduino Nano — Desenhar Formas no OLED SSD1309
Como a biblioteca DIYables_OLED_SSD1309 estende a Adafruit_GFX, você tem um conjunto completo de primitivas para desenhar formas: pixels, linhas, retângulos, retângulos preenchidos, círculos, círculos preenchidos, triângulos, triângulos preenchidos e retângulos arredondados. O sketch abaixo percorre todas elas com demonstrações animadas.
Código Arduino Nano — Rolagem por Hardware no OLED SSD1309
O SSD1309 tem um mecanismo de rolagem integrado que desloca o conteúdo do display sem nenhuma carga na CPU. A biblioteca DIYables oferece quatro direções de rolagem: direita, esquerda, diagonal para a direita e diagonal para a esquerda. Cada uma recebe um parâmetro de página inicial e de página final (as páginas são faixas horizontais de 8 pixels de altura, numeradas de 0 a 7 em um display de 64 pixels de altura).
※ Nota:
Sempre chame display() para enviar o seu conteúdo ao OLED antes de iniciar uma rolagem. Evite desenhar conteúdo novo enquanto a rolagem estiver ativa — chame stopscroll() primeiro.
Código Arduino Nano — Exibir Imagem Bitmap no OLED SSD1309
Para exibir um bitmap no OLED SSD1309, você precisa primeiro converter a sua imagem em um array de bytes em C. Use a ferramenta online image2cpp gratuita para essa conversão:
- Envie o arquivo da sua imagem (PNG, JPG, BMP etc.).
- Defina o tamanho do canvas como 128×64 (ou menor).
- Escolha Arduino code como formato de saída.
- Copie o array gerado para o seu sketch.

O exemplo abaixo alterna entre um ícone de coração de 16×16 e um logotipo da DIYables em largura total:
※ Nota:
- As dimensões do bitmap não devem exceder a resolução da tela (128×64 para o módulo de 2,42 polegadas).
Código Arduino Nano — Contraste e Redução de Brilho no OLED SSD1309
O SSD1309 oferece 256 níveis de contraste (0–255). A biblioteca DIYables fornece setContrast() para um controle preciso e dim() para alternar rapidamente entre o brilho mínimo e o nível configurado anteriormente.
Código Arduino Nano — Fontes Externas Personalizadas no OLED SSD1309
A biblioteca Adafruit GFX inclui dezenas de tipos de letra escaláveis FreeFont (Serif, Sans, Mono — cada um em Regular, Bold, Italic e quatro tamanhos). Você pode ativar qualquer um deles no display SSD1309 incluindo o header correspondente e chamando setFont().
※ Nota:
- Quando uma fonte externa está ativa, a coordenada Y do cursor se refere à linha de base do texto, não ao canto superior esquerdo. Isso é diferente da fonte interna 5×7.
- As fontes externas ficam armazenadas na flash (PROGMEM). Em placas AVR com pouca memória (Arduino Nano = 32 KB de flash), use-as com moderação.
Solução de Problemas do OLED SSD1309 com Arduino Nano
Se nada aparecer no OLED SSD1309 de 2,42 polegadas depois de carregar o seu sketch, faça estas verificações:
- Verifique a ligação — confirme que SDA, SCL, VCC e GND estão conectados aos pinos corretos do Arduino Nano.
- Confirme o chip driver — esta biblioteca foi feita para o SSD1309. Se o seu módulo usa outro controlador (por exemplo, SH1106), ele não vai responder corretamente.
- Verifique o endereço I2C — a maioria dos módulos SSD1309 usa 0x3C por padrão, mas alguns usam 0x3D. Execute o sketch de scanner I2C abaixo para detectar o endereço real:
Saída esperada no Serial Monitor quando o SSD1309 é detectado:
- Garanta que display() seja chamada — o SSD1309 usa um frame buffer. As funções de desenho apenas modificam o buffer na RAM; nada aparece na tela até você chamar oled.display().
- Verifique a fonte de alimentação — o módulo de 2,42 polegadas consome mais corrente que OLEDs menores. Garanta que a sua fonte de alimentação consiga fornecer corrente suficiente (normalmente 20–40 mA com brilho máximo).
Tutorial em Vídeo
Conclusão
Este guia cobriu tudo o que é essencial para usar o display OLED SSD1309 de 2,42 polegadas (128×64) com o Arduino Nano, incluindo:
- Conexões de hardware e ligação I2C
- Exibição de texto e números em vários tamanhos
- Desenho de formas (retângulos, círculos, triângulos)
- Exibição de imagens bitmap
- Rolagem por hardware em quatro direções
- Controle de contraste e brilho
- Fontes externas personalizadas
A biblioteca DIYables_OLED_SSD1309 simplifica a programação do SSD1309 ao oferecer funções de alto nível para texto, gráficos e controle do display, aproveitando o Adafruit GFX para recursos de desenho ampliados.
Para mais projetos e tutoriais de Arduino Nano, visite arduinogetstarted.com