Display OLED com ARDUINO

Display-OLED
Font Size

Quando estamos projetando, por exemplo uma máquina ou equipamento, por muitas vezes temos a necessidade de uma interface visual. Esta interface pode ser um LED, um display de 7 segmentos, um display LCD, um display de OLED, entre outros.

Na etapa de desenvolvimento do seu projeto não é tão necessário qualquer “saída” visual, pois podemos utilizar uma saída serial para avaliar o funcionamento do circuito. Entretanto, isto demanda de um notebook ou desktop para conexão entre o seu equipamento e uma tela. Quando se vislumbra a utilização deste equipamento de forma mais funcional é necessário acrescentar algum artificio para podermos utilizar da melhor forma nosso projeto.

Na postagem de hoje vamos falar de um componente que particularmente utilizo muito durante as prototipagens dos meus projetos: Display Oled Gráfico 128×64.

 

Display OLED 0,96″ 128 x 64

OLED

Antes de mais nada vamos entender um pouco mais do que se trata o organic light-emitting diode ou diodo emissor de luz orgânico. Basicamente este o OLED tem o funcionamento semelhante aos diodos e LED convencionais, contudo ao invés de utilizar camadas tipo n e p, ele utiliza moléculas orgânicas para produzir seus pixels.

Ele é composto por seis camadas diferentes. Na parte superior e inferior existem camadas de vidro ou plástico para proteção. Entre estas camadas estão localizados os terminais negativo (catodo) e positivo (anodo), e finalmente entre estes terminais ficam as camadas orgânicas emissiva(onde a luz é produzida) e a camada condutora(ao lado do anodo).

 

Quais são as vantagens e desvantagens deste display?

Vantagens: como não necessita de iluminação externa este display tem um consumo de energia muito baixa comparado aos modelos convencionais. Quando pensamos em IoT economia de energia é uma das principais premissas de projeto. Além disso eles tem um brilho e um contraste que deixam qualquer interface visual muito interessante.

Desvantagens: além da produção ser mais complexa, o que o torna mais caro, este display possui uma vida útil menor do que outros modelos. A vida útil pode variar de 10 mil a 40 mil horas de uso, não acho que isso seja pouco mas enfim… Outro detalhe importante – água pode danifica-lo facilmente, então evite projetos que corram o risco de molhar o display.

DISPLAY OLED GRÁFICO

O display OLED possui um tamanho 0,96¨ com 128 x 64 pixels, ou seja, são 8192 pontos que podem ser alterados. Quem está por trás deste controle é o SSD1306. Este chip é responsável por fazer o controle e a comunicação entre o dispositivo e algum microcontrolador/CPU.

A comunicação entre o microcontrolador e o display é feita através da interface I2C

Especificações:

Agora que conhecemos um pouco do display vamos colocar em prática o que foi apresentado. LET’S WORK

CONECTANDO O DISPLAY NO ARDUINO

Neste tutorial mostraremos como fazer a conexão entre o Arduino e o display OLED 0,96¨através da comunicação I2c.

Materiais Utilizados:

Esses itens, e mais uma outros para implementar seu projeto – você acha AQUI na nossa loja :D.

Montagem:

Para montarmos este projeto iremos seguir o esquema abaixo:

DICA: como o consumo deste Display é baixo podemos utilizar o próprio Arduino como fonte de energia, porém o projeto fica vinculado a uma conexão com cabo USB. Sugiro então a utilização de uma fonte ajustável para sua protoboard e uma fonte de alimentação externa.

Bibliotecas

Para fazer o display funcionar corretamente é importante adicionar sua biblioteca especifica. Foram testadas duas bibliotecas e ambas funcionaram corretamente:

Para instalar é bem simples: na IDE Arduino clique na aba superior Sketch > Incluir Biblioteca > Adicionar Biblioteca .ZIP. Então basta selecionar o arquivo .ZIP que você baixou dos repositórios disponíveis acima.

Essas bibliotecas incluem uma série de exemplos e aplicações para testar o funcionamento do display.

Existem comando para desenhar as mais diversas figuras geométricas, textos com fontes e tamanhos variados, caracteres especiais, além de poder plotar alguma figura especifica em bitmap.

É importante ler o conteúdo da página WIKI deste display – nele encontramos todos os comandos possíveis e como implementá-los.

Código-fonte: ALO MUNDO!

Como de praxe o primeiro programa a ser testado deve ser simples, visando uma introdução e familiarização ao conteúdo que esta sendo estudado.

Desta forma utilizamos aqui um exemplo da própria biblioteca com algumas pequenas alterações:

/*

  "Hello World!" example code.
    
  Universal 8bit Graphics Library, https://github.com/olikraus/u8glib/
  
  Copyright (c) 2012, olikraus@gmail.com
  All rights reserved.

  Adaptado por: Samuel Centenaro de Oliveira(samuelcentenaro@gmail.com)
  Data: 25/07/2017
*/


#include "U8glib.h"

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK);	// Display which does not send AC



void draw(void) {
  // graphic commands to redraw the complete screen should be placed here  
  u8g.setFont(u8g_font_unifont);
  //u8g.setFont(u8g_font_osb21);
  u8g.drawStr( 0, 22, "Auto Core");
}

void setup(void) {
  // flip screen, if required
  // u8g.setRot180();
  
  // set SPI backup if required
  //u8g.setHardwareBackup(u8g_backup_avr_spi);

  // assign default color value
  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255);     // white
  }
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3);         // max intensity
  }
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1);         // pixel on
  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255,255,255);
  }
}

void loop(void) {
  // picture loop
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
  
  // rebuild the picture after some delay
  delay(50);
}

 

O comando U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); é o que configura a utilização deste modelo especifico de display com esta biblioteca, por isso é imprescindível nos atentarmos a este detalhes.

Na figura abaixo eu criei uma imagem em bitmap para colocar no display. Por enquanto vou deixar vocês na curiosidade para um próximo post que faremos.

 

Montagens e testes de funcionamento.

CONCLUSÕES

Neste post conhecemos um pouco as características e funcionalidades deste dispositivo que eu considero de fundamental importância para qualquer projeto MAKER. Fizemos uma breve apresentação do que podemos fazer, no intuito realmente de fazer os primeiros testes e avaliações dos produtos.

Podem fazer qualquer pergunto que estamos aqui para responde-las e tentam ajuda-los da melhor maneira possível. Leiam, estudem, testem, critiquem, sugestione – tudo é muito importante para nós.

E não esqueça de dar um pulo na loja para aproveitar as promoções e novidades!

Até o próximo post.

Se você gostou deste post deixe seu comentário aqui e curta no Facebook!!

REFERÊNCIAS

http://www.explainthatstuff.com/how-oleds-and-leps-work.html

http://www.instructables.com/id/Monochrome-096-i2c-OLED-display-with-arduino-SSD13/

http://guy.carpenter.id.au/gaugette/2012/11/08/controlling-an-adafruit-spi-oled-with-a-raspberry-pi/

Posts relacionados

Utilizando Sensor de Pulsos com Arduino

por Danilo Nogueira
5 anos ago

Criando aplicativos com App Inventor: Parte 3

por Danilo Nogueira
5 anos ago

[Projeto] Interruptor com Sensor de Gás

por autocore
9 anos ago
Sair da versão mobile