Como Exibir Texto no OLED com Seeeduino XIAO e U8g2

Seeeduino XIAO com OLED 128x64 na protoboard exibindo texto via I2C e U8g2

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 OLEDPino do Seeeduino XIAO
VCC5V (ou 3.3V se suportado)
GNDGND
SCLD5 (SCL)
SDAD4 (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

  1. Abra o Arduino IDE.
  2. No menu superior, clique em Ferramentas > Gerenciar Bibliotecas.
  3. Na barra de pesquisa, digite U8g2.
  4. Encontre a biblioteca “U8g2 by olikraus” e clique em Instalar.
  5. 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.

Related Posts

Deixe um comentário