Com o display Oled Colorido SSD1331 você pode criar projetos com maior interatividade com o usuário, já que o display permite mostrar até 65.000 cores diferentes, entre gráficos e texto.

Como exemplo, vamos montar um medidor de distância com sensor ultrassônico HC-SR04, mostrando na tela a distância e ao lado um gráfico, que aumenta ou diminui conforme a distância do objeto ao sensor.
Display Oled Colorido 0.96″
O display oled que vamos utilizar é de 0.96 polegadas, com resolução de 96×64 pixels. Ele é capaz de mostrar 65.000 cores, funcionando com conexão SPI e tensão de alimentação entre 2,8 e 5,5V. O controlador é o SSD1331 (datasheet).
Ao contrário de outros displays que tem apenas uma faixa colorida no topo (altura de 13 pixels, se não me engano), esse display oled colorido é capaz de mostrar cores em qualquer área da tela, deixando o seu projeto muito mais agradável visualmente.
Outro ponto positivo deste display é a compatibilidade com placas que trabalham com nível de sinal de 3.3 e 5V, assim você pode usar o display diretamente em placas como Arduino, Raspberry Pi, módulos ESP8266, etc.
Conexão display oled colorido no Arduino
Como já mencionamos anteriormente, a conexão com o Arduino é feita pela interface SPI. Vamos então conectar o display em um Arduino Uno usando os pinos digitais 8, 9, 10, 11 e 13.
Nos pinos digitais 5 e 6 vamos ligar os pinos trigger e echo o sensor ultrassônico HC-SR04.
Programa medidor de distância
O programa do medidor de distância com display oled colorido usa as bibliotecas Adafruit SSD 1331, Ultrasonic e também da Adafruit GFX para mexer na parte gráfica do display. Instale essas bibliotecas a partir do menu da IDE do Arduino, em Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas. Primeiramente procure por ssd1331 e instale a biblioteca indicada na imagem abaixo:
Repita o procedimento procurando por Ultrasonic:
Por último, procure por Adafruit GFX e instale a biblioteca:
Após a instalação das bibliotecas e inicialização do display e do sensor ultrassônico, o programa efetua a leitura do sensor e chama a rotina AtualizaDisplay() para mostrar as informações na tela.
//Programa: Medidor de distancia com
// display Oled Colorido SSD1331
//Autor: Arduino e Cia
#include <Ultrasonic.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>
//Pinos de ligacao do display SSD1331
#define sclk 13
#define mosi 11
#define cs 10
#define rst 9
#define dc 8
//Definicao de cores
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
//Ligacao do pino Trigger do HC-SR04
#define PINO_TRIGGER 5
//Ligacao do pino Echo do HC-SR04
#define PINO_ECHO 6
//Inicializa o sensor ultrassonico
Ultrasonic Ultrasonic(PINO_TRIGGER, PINO_ECHO);
//Inicializa o display Oled
Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, rst);
//Posicao inicial do grafico
int posicao_x = 72;
int posicao_y = 26;
int largura = 8;
int altura = 2;
void setup(void)
{
Serial.begin(9600);
display.begin();
//Informacoes iniciais do display
display.fillScreen(BLACK);
display.drawRect(0, 0, 96, 17, WHITE);
display.fillRect(0, 0, 96, 17, YELLOW);
display.drawRect(0, 0, 96, 17, WHITE);
display.drawRect(0, 19 , 54, 44, WHITE);
display.drawRect(55, 19 , 41, 44, WHITE);
display.setCursor( 22, 50 );
display.print("cm");
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor( 22, 5 );
display.print( "DISTANCIA" );
}
void loop(void)
{
//Leitura da distancia do HC-SR04
long distancia = Ultrasonic.distanceRead();
//Atualiza as informacoes na tela
AtualizaDisplay(distancia);
delay(30);
}
void AtualizaDisplay(long val)
{
//Atualiza a distancia na tela
display.fillRect(1, 20 , 50, 23, BLACK);
display.setTextSize(2);
display.setTextColor(BLUE);
display.setCursor( 10, 29 );
display.print( val );
//Atualiza a animacao da distancia
display.fillRect(57, 20 , 38, 42, BLACK);
posicao_x = 72;
posicao_y = 26;
largura = 8;
altura = 2;
int grafico = map(val, 0, 200, 1, 8);
if (grafico >= 8)
{
grafico = 8;
}
//Preenche animacao distancia
for (int i = 1; i <= grafico; i++)
{
display.fillRect(posicao_x, posicao_y , largura, altura, GREEN);
posicao_x = posicao_x - 2;
posicao_y = posicao_y + 4;
largura = largura + 4;
}
}
Para maiores informações sobre os comandos gráficos da biblioteca Adafruit GFX, consulte a documentação da biblioteca neste link.
Gostou do display Oled Colorido SSD1331? Confira também como fazer um medidor usando display LCD 16×2 no post Medidor de Distância com o sensor ultrassônico HC-SR04.