Os displays OLED I2C 128×64 são ideais para projetos compactos, pois oferecem alto contraste e baixo consumo de energia. Neste tutorial, vamos utilizar um Seeeduino XIAO para exibir mensagens sequenciais no display OLED usando a biblioteca U8g2.
Este projeto exibe palavras no OLED, cada uma por 1,2 segundos, seguido de uma tela preta por 1,5 segundos antes de repetir.
Materiais Necessários
- Seeeduino XIAO
- Display OLED I2C SSD1315/SSD1306 128×64
- Jumpers para conexão
Conectando o OLED ao Seeeduino XIAO
O display se comunica via I2C, então os pinos devem ser conectados corretamente:
Pino do OLED | Pino do Seeeduino XIAO |
---|---|
VCC | 5V (ou 3.3V se suportado) |
GND | GND |
SCL | D5 (SCL) |
SDA | D4 (SDA) |
Instalando a Biblioteca U8g2 no Arduino IDE
Antes de rodarmos o código, precisamos instalar a biblioteca U8g2, que permite controlar displays OLED e LCD gráficos de forma eficiente.
Passo a Passo para Instalar a U8g2
- Abra o Arduino IDE.
- No menu superior, clique em Ferramentas > Gerenciar Bibliotecas.
- Na barra de pesquisa, digite U8g2.
- Encontre a biblioteca “U8g2 by olikraus” e clique em Instalar.
- Aguarde o download e instalação.
Após instalar, a biblioteca já estará disponível para uso nos seus projetos!
Código Completo
A seguir, temos o código que exibe as mensagens no OLED.
#include <Wire.h>
#include <U8g2lib.h>
// Inicializa o display OLED com comunicação I2C (128x64 pixels)
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
void setup() {
u8g2.begin(); // Inicia a comunicação com o OLED
}
void loop() {
displayText("Bom Dia", u8g2_font_7x14_tf, 1200); // Exibe "Bom Dia" por 1,2 segundos
displayText("Brasil", u8g2_font_7x14_tf, 1200); // Exibe "Brasil" por 1,2 segundos
displayText("Sou", u8g2_font_7x14_tf, 1200); // Exibe "Sou" por 1,2 segundos
displayText("Timon", u8g2_font_7x14_tf, 1200); // Exibe "Timon" por 1,2 segundos
clearScreen(1500); // Tela preta por 1,5 segundos
}
// Função para exibir texto centralizado na tela
void displayText(const char* text, const uint8_t* font, int delayTime) {
u8g2.clearBuffer(); // Limpa o buffer de exibição
u8g2.setFont(font); // Define a fonte do texto
int16_t text_width = u8g2.getStrWidth(text);
int16_t x = (128 - text_width) / 2; // Calcula posição central horizontalmente
// Ajusta a posição vertical com base no tamanho da fonte
int16_t font_height = u8g2.getMaxCharHeight();
int16_t y = (64 / 2) + (font_height / 2) + 15;
u8g2.setCursor(x, y);
u8g2.print(text);
u8g2.sendBuffer(); // Atualiza o display OLED
delay(delayTime); // Aguarda o tempo definido antes de mudar para o próximo texto
}
// Função para limpar a tela
void clearScreen(int delayTime) {
u8g2.clearBuffer(); // Apaga o buffer da tela
u8g2.sendBuffer(); // Atualiza o OLED com a tela vazia
delay(delayTime); // Aguarda o tempo definido antes de continuar
}
Conclusão
Este tutorial demonstrou como exibir mensagens sequenciais em um OLED I2C com o Seeeduino XIAO e a biblioteca U8g2. Essa técnica pode ser usada para criar menus, relógios, notificações e outras interações visuais.
Você pode modificar o código para incluir novos efeitos, fontes, tempos de exibição ou até animações.