• COMPONENTE

    DISPLAY OLED

    Display OLED

O que é um módulo OLED?

O display OLED SSD1306 é um monitor monocolor extremamente econômico comparado a outras telas. Com este display, é possível desenhar formas e exibir textos e imagens de bitmap. A conexão de dados deste modelo é I2C, mas existem outros monitores OLED que se comunicam usando a comunicação SPI.

O modelo em questão possui 0,96 polegadas com 128×64 pixels e não requer luz de fundo, o que resulta em um contraste muito agradável em ambientes escuros. Possui apenas quatro pinos, dois para alimentação (VCC e GND) e dois para dados (relógio serial SCL e serial data SDA), tornando a fiação muito simples.

O módulo possui um poderoso controlador de driver CMOS OLED de chip único - SSD1306. Ele pode se comunicar com o microcontrolador de várias maneiras, incluindo I2C e SPI. O SPI é geralmente mais rápido que o I2C, mas requer mais pinos de E/S. Enquanto o I2C requer apenas dois pinos e pode ser compartilhado com outros periféricos I2C. É uma troca entre pinos e velocidade.

OLed arduino
Pinos OLed arduino

Atenção

Dependendo do modelo e fabricante os pinos de alimentação do OLED podem estar em ordem diferente, portanto verifique sempre antes de ligá-lo.

Montagem dos componentes

Logo abaixo temos a lista de componentes utilizado neste exemplo, e sua ligação com o Arduino.

  • 1 x Arduino Uno SMD
  • 1 x Cabo USB para comunicação
  • 1 x Protoboard 400 pontos
  • 1 x Display OLED 0,96"
  • 4 x Jumpers macho/macho
Esquema montagem oled arduino

Código exemplo

Este código utiliza um display OLED com a biblioteca MicroLCD para mostrar textos e gráficos simples, como as imagens "tick" e "cross", além de exibir o número "12345678" em diferentes tamanhos de fonte.
Para utilizar a biblioteca MicroLCD.h, você pode instalá-la diretamente pelo Gerenciador de Bibliotecas na IDE do Arduino. Se ela não estiver disponível, você também pode realizar a instalação manualmente baixando a biblioteca por meio deste link.

IDE Arduino

#include <Arduino.h>  // Biblioteca principal do Arduino para permitir a criação de sketches
#include <Wire.h>     // Biblioteca necessária para a comunicação I2C
#include <MicroLCD.h> // Biblioteca para controle do display OLED

// LCD_SH1106 lcd; /* para módulo OLED modelo SH1106 */
// Descomente a linha acima e comente a linha abaixo se estiver usando um display SH1106

LCD_SSD1306 lcd; /* para módulo OLED modelo SSD1306 */
// Criação de um objeto `lcd` para controlar o display OLED do modelo SSD1306

// Definição dos padrões de imagem para o "tick" e "cross"
// As imagens são definidas como arrays de bytes (16x16 pixels)
// O PROGMEM garante que esses arrays sejam armazenados na memória flash do microcontrolador,
// economizando a memória RAM

const PROGMEM uint8_t tick[16 * 16 / 8] = 
{0x00,0x80,0xC0,0xE0,0xC0,0x80,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0x78,0x30,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x1F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00};

const PROGMEM uint8_t cross[16 * 16 / 8] = 
{0x00,0x0C,0x1C,0x3C,0x78,0xF0,0xE0,0xC0,0xE0,0xF0,0x78,0x3C,0x1C,0x0C,0x00,0x00,0x00,0x30,0x38,0x3C,0x1E,0x0F,0x07,0x03,0x07,0x0F,0x1E,0x3C,0x38,0x30,0x00,0x00};

void setup() {
    lcd.begin(); // Inicializa o display OLED
}

void loop() {
    lcd.clear(); // Limpa o conteúdo atual do display

    // Exibe "Hello, world!" com tamanho de fonte pequeno
    lcd.setFontSize(FONT_SIZE_SMALL);
    lcd.println("Hello, world!");

    // Exibe "Hello, world!" com tamanho de fonte médio
    lcd.setFontSize(FONT_SIZE_MEDIUM);
    lcd.println("Hello, world!");
    delay(1000); // Aguarda por 1 segundo

    // Define a posição do cursor e desenha as imagens "tick" e "cross" no display
    lcd.setCursor(40, 6); // Define a posição para a imagem "tick"
    lcd.draw(tick, 16, 16); // Desenha a imagem "tick"
    
    lcd.setCursor(72, 6); // Define a posição para a imagem "cross"
    lcd.draw(cross, 16, 16); // Desenha a imagem "cross"
    delay(1000); // Aguarda por 1 segundo

    // Limpa o display e exibe o número 12345678 em diferentes tamanhos de fonte
    lcd.clear();
    lcd.setCursor(0, 0); // Define o cursor no início do display
    lcd.setFontSize(FONT_SIZE_SMALL); // Tamanho de fonte pequeno
    lcd.printLong(12345678); // Exibe o número 12345678
    delay(1000); // Aguarda por 1 segundo

    lcd.clear();
    lcd.setCursor(0, 0); // Define o cursor no início do display
    lcd.setFontSize(FONT_SIZE_MEDIUM); // Tamanho de fonte médio
    lcd.printLong(12345678); // Exibe o número 12345678
    delay(1000); // Aguarda por 1 segundo

    lcd.clear();
    lcd.setCursor(0, 0); // Define o cursor no início do display
    lcd.setFontSize(FONT_SIZE_LARGE); // Tamanho de fonte grande
    lcd.printLong(12345678); // Exibe o número 12345678
    delay(1000); // Aguarda por 1 segundo

    lcd.clear();
    lcd.setCursor(0, 0); // Define o cursor no início do display
    lcd.setFontSize(FONT_SIZE_XLARGE); // Tamanho de fonte extra grande
    lcd.printLong(12345678); // Exibe o número 12345678
    delay(1000); // Aguarda por 1 segundo
}


IDE Arduino