A PMOD OLED RGB/SSD1331 é uma controladora para telas de Diodo Orgânico Emissor de Luz (OLED) coloridas. Diferente das telas de LCD, as telas OLED não necessitam de uma luz de fundo (backlight), pois cada pixel emite sua própria luz. Isso resulta em um contraste superior, pretos verdadeiramente pretos e um menor consumo de energia. O modelo em questão é uma tela RGB, o que significa que ela é capaz de exibir uma vasta gama de cores.
- Resolução: Geralmente 96x64 pixels.
- Cores: 65.536 cores (16-bit).
- Interface de Comunicação: SPI (Serial Peripheral Interface), um protocolo de comunicação serial rápido.
- Tensão de Operação: Varia conforme o módulo, mas geralmente opera com 3.3V ou 5V. É crucial verificar a especificação do seu módulo.
Para seguir este tutorial, você precisará dos seguintes componentes:
- Tela PMOD OLED RGB/SSD1331: O componente principal.
- Microcontrolador: Recomendamos o Arduino Uno por ser extremamente popular entre iniciantes e possuir uma vasta documentação e suporte da comunidade. Um ESP32 também é uma ótima opção, mas este tutorial focará no Arduino Uno.
- Protoboard (Matriz de Contatos): Para montar o circuito sem a necessidade de solda.
- Jumpers (Fios Macho-Macho e Macho-Fêmea): Para realizar as conexões entre a tela e o Arduino.
- Cabo USB: Para programar o Arduino e alimentá-lo.
- Computador com a IDE do Arduino instalada: A IDE do Arduino pode ser baixada gratuitamente no site oficial do Arduino.
Os módulos com a tela PMOD OLED RGB/SSD1331 geralmente possuem 7 pinos. A nomenclatura pode variar um pouco, mas a função é a mesma:
- GND: Pino de aterramento.
- VCC: Pino de alimentação (3.3V ou 5V).
- SCL, SCK ou CLK: Pino do Clock do SPI.
- SDA, MOSI ou DIN: Pino de Dados do SPI (Master Out Slave In).
- RES ou RST: Pino de Reset.
- DC, A0 ou D/C: Pino de seleção entre Dados e Comando.
- CS ou SCE: Pino de Chip Select (Seleção de Chip).
A conexão será feita utilizando a interface SPI do Arduino.
Observação Importante sobre a Tensão: O Arduino Uno opera com lógica de 5V, enquanto a tela PMOD OLED RGB/SSD1331 geralmente opera com lógica de 3.3V. Conectar diretamente os pinos de dados do Arduino (5V) na tela (3.3V) pode danificá-la a longo prazo. O ideal é usar um conversor de nível lógico. No entanto, para simplificar este tutorial inicial, muitos utilizam resistores para criar um divisor de tensão, o que é uma solução aceitável para aprendizado. A conexão de VCC, no entanto, deve respeitar a tensão do módulo (verifique se ele possui um regulador de tensão integrado que suporte 5V). Se o seu módulo for estritamente 3.3V, conecte o VCC ao pino 3.3V do Arduino.
| Pino da Tela PMOD OLED RGB/SSD1331 | Conexão no Arduino Uno |
|---|---|
| GND | GND |
| VCC | 5V (ou 3.3V, verifique seu módulo) |
| SCL/CLK | Pino Digital 13 (SCK) |
| SDA/MOSI | Pino Digital 11 (MOSI) |
| RES/RST | Pino Digital 9 |
| DC | Pino Digital 8 |
| CS | Pino Digital 10 (SS) |
TELA PMOD OLED RGB/SSD1331 [cite: 41] ARDUINO UNO [cite: 42]
GND [cite: 43] ------------------ GND [cite: 44]
VCC [cite: 45] ------------------ 5V [cite: 46]
SCL [cite: 47] ------------------ Pino 13 [cite: 48]
SDA [cite: 49] ------------------ Pino 11 [cite: 50]
RES [cite: 51] ------------------ Pino 9 [cite: 52]
DC [cite: 53] ------------------ Pino 8 [cite: 54]
CS [cite: 55] ------------------ Pino 10 [cite: 56]
Para controlar a tela de forma simples, utilizaremos duas bibliotecas da Adafruit: a Adafruit GFX Library e a Adafruit SSD1331 Library.
- Abra a IDE do Arduino.
- Vá em
Sketch>Incluir Biblioteca>Gerenciar Bibliotecas.... - Na barra de pesquisa, digite
Adafruit GFX. Encontre a bibliotecaAdafruit GFX Libraryby Adafruit e clique em Instalar. - Agora, na mesma barra de pesquisa, digite
Adafruit SSD1331. Encontre a bibliotecaAdafruit SSD1331 OLED Driver Libraryby Adafruit e clique em Instalar. - Quando for solicitado a instalação de dependências (como a
Adafruit BusIO), clique em Install all.
Com as bibliotecas instaladas e o hardware conectado, estamos prontos para enviar nosso primeiro código para o Arduino. Este código de exemplo irá inicializar a tela e demonstrar como desenhar textos, linhas, retângulos e círculos coloridos.
Copie e cole o seguinte código na sua IDE do Arduino:
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>
// Definição dos pinos de conexão com a tela
#define sck 13
#define mosi 11
#define cs 10
#define rst 9
#define dc 8
// Inicializa a biblioteca da Adafruit com os pinos definidos
Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, rst);
// Definição de algumas cores em formato RGB 565
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
void setup() {
// Inicia a comunicação serial para debug (opcional)
Serial.begin(9600);
// Inicia a tela
display.begin();
Serial.println("Teste da tela OLED RGB SSD1331");
// Limpa a tela com a cor preta
display.fillScreen(BLACK);
delay(500);
// Define o tamanho e a cor do texto
display.setTextSize(1);
display.setTextColor(WHITE);
// Posiciona o cursor e escreve um texto
display.setCursor(0, 0);
display.println("Ola, Mundo!");
display.setTextColor(YELLOW);
display.println("Teste de Cores");
delay(2000);
// Desenha algumas formas geométricas
testdrawline();
delay(1000);
testdrawrect();
delay(1000);
testfillrect();
delay(1000);
testdrawcircle();
delay(1000);
testfillcircle();
delay(1000);
}
void loop() {
// O código no loop será executado repetidamente
// Vamos fazer um efeito de inversão de cores
display.invertDisplay(true);
delay(500);
display.invertDisplay(false);
delay(500);
}
void testdrawline() {
for (int16_t i=0; i<display.width(); i+=4) {
display.drawLine(0, 0, i, display.height()-1, RED);
delay(10);
}
for (int16_t i=0; i<display.height(); i+=4) {
display.drawLine(0, 0, display.width()-1, i, GREEN);
delay(10);
}
delay(500);
}
void testdrawrect() {
display.drawRect(display.width()/2-10, display.height()/2-10, 20, 20, BLUE);
}
void testfillrect() {
display.fillRect(display.width()/2-5, display.height()/2-5, 10, 10, MAGENTA);
}
void testdrawcircle() {
display.drawCircle(display.width()/2, display.height()/2, 20, CYAN);
}
void testfillcircle() {
display.fillCircle(display.width()/2, display.height()/2, 10, YELLOW);
}- Conecte o seu Arduino Uno ao computador com o cabo USB.
- Na IDE do Arduino, vá em
Ferramentas>Placae selecione "Arduino Uno". - Em
Ferramentas>Porta, selecione a porta COM à qual o seu Arduino está conectado. - Clique no botão de
Carregar(a seta para a direita) para compilar e enviar o código para o Arduino.
Se tudo foi conectado corretamente e o código for carregado com sucesso, sua tela PMOD OLED RGB/SSD1331 deverá ganhar vida, exibindo "Ola, Mundo!", "Teste de Cores" e uma sequência de formas geométricas coloridas.
- Verifique todas as conexões, especialmente os pinos VCC e GND.
- Certifique-se de que a porta COM correta está selecionada na IDE do Arduino.
- Tente alimentar o módulo com 3.3V do Arduino em vez de 5V, e vice-versa, mas sempre com cuidado para não danificar o componente.
- Verifique a conexão dos pinos de dados (SCL, SDA, RES, DC, CS). Uma conexão frouxa pode causar esse problema.
- A velocidade do SPI pode estar incorreta. A biblioteca da Adafruit geralmente lida com isso, mas verifique se não há interferência de outros dispositivos no mesmo barramento SPI.
- Certifique-se de que as bibliotecas
Adafruit GFXeAdafruit SSD1331foram instaladas corretamente. - Verifique se não há erros de digitação no código.
-
Tutorial de Bitmap no Arduino: https://www.youtube.com/watch?v=7ER1fbDoc20&t=230s
-
GitHub Arduino for Beginners: https://github.com/BasOnTech/Arduino-Beginners-EN/blob/master/E25-0LED-SPI-SSD1331-96x64-color/E25-OLED-SPI-SSD1331-96x64-color.ino