Medidor de distância com display OLED colorido

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. 

Medidor de distância com display Oled Colorido

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.

4.8/5 - (11 votos)

Related posts

LCD 16×2 com módulo I2C e RTC DS1307

by Arduino e Cia
10 anos ago

Resistor de elevação

by Arduino e Cia
12 anos ago

Como utilizar o display TFT Touch 3.5″ com Arduino

by Arduino e Cia
5 anos ago
Sair da versão mobile