Conectando display 128×64 no Arduino Mega

Tirar suas ideias do papel com Arduino é algo fantástico, que as vezes me faz pensar: “era isso que faltava”. Hoje temos um mundo de novas possibilidades quando se pensa em desenvolver algo divertido ou resolver um pequeno problema que nos incomoda muito.

O mundo é feito de interações, seja psicológicas ou com objetos físicos. Um display de 128×64 pontos é uma excelente tela para um aplicativo pequeno e medio, onde moderadas informações precisam ser passadas para o usuário gerando então uma Interface de comunicação com este.

Podemos com ele apresentar desde grandes textos, para pessoas que tenham dificuldade na leitura de telas comuns, e até imagens convertidas de um bmp. Portanto, se seu projeto exige boa interação com o usuário, é indispensável o uso de um display 128×64.

O display

Sem muitos segredos, abaixo algumas imagens do display, para que possamos ter melhor uma ideia de seu tamanho (eu mesmo antes de tê-lo ficava em dúvida qual suas medidas práticas).

Display lcd 128x64 com Arduino Mega

Visão de cima segurando o display lcd 128×64 conectado ao Arduino Mega

display lcd 128x64 Arduino Mega e Potenciômetro

Simplicidade de conexões entre Arduino e Display 128×64

display lcd 128x64 em funcionamento

Display 128×64 exibindo texto

As conexões

Apesar de existirem vários displays no mercado, com controladoras diferentes, não é difícil descobrir qual o padrão de comunicação deste RT12864J-1. Seguindo a tabela encontrada no site oficial do Arduino[1] podemos facilmente ver como funcionam as conexões para os diversos modelos de display e Arduinos. O display aqui usado, com o Arduino Mega usa as seguintes conexões:

Pino do Display LCD 128×64 Pino do Arduino Mega Comentários
1 GND
2 5V
3 Externo Pino do centro do trimpot
4 36 Data Instrunsion
5 35 Read / Write
6 37 Enable Signal
7 22 D0
8 23 D1
9 24 D2
10 25 D3
11 26 D4
12 27 D5
13 28 D6
14 29 D7
15 33 CCEL 1
16 34 CCEL 2
17 Reset Desconectar durante gravação
18 Externo Pino lateral do trimpot
19 5V Backlight
20 GND Backlight

O Trimpot

Basicamente um trimpot é um potenciômetro não usado por usuários. Normalmente pequenos, estão disponíveis no circuito para que possamos fazer pequenos ajustes definitivos. Nos displays LCD em geral os usamos para ajustar o brilho da imagem, e sem esse ajuste simplesmente não é possível vermos algo! Por isso, sempre cuide ao trabalhar com um display LCD, tive sérios problemas até descobrir que o trimpot é sim importante para seu correto funcionamento.

Mas o que faz um trimpot/potenciômetro?
Basicamente ele funciona como um resistor que tem sua resistência alterada de acordo com o giro de ajuste presente no componente. Simples assim.
Trimpot display LCD 128x64No nosso display, precisamos fazer as conexões dos pinos 3 e 17 no meio e lateral do trimpot respectivamente. A imagem ao lado, retirada do datasheet do display[2], ilustra tal conexão. Podemos ver que tanto um potenciômetro de 10 quanto de 20Kohms pode ser usado. Usei um de 10k.
Lembre-se que o outro pino da lateral do trimpot (que ficou livre) deve ser conectado em GND.

Potenciômetro 10k com Arduino

Potenciômetro usado no lugar de um Trimpot para ajuste da imagem do display LCD

Software utilizado

Para começar a usar o display, baixe a biblioteca e alguns exemplos aqui. Caso esse link não fique mais disponível, apenas acesse o site oficial do Arduino encontrando logo no início esse download. Se preferir você pode ainda acessar o projeto oficial no google code.

Para exibir o texto no display (que será usado em um projeto em andamento e que publicarei aqui), de acordo com a imagem do início deste post, usei o seguinte código:

#include   // library header
#include   // font definition for 14 point Arial font.
#include "SystemFont5x7.h"   // system font
unsigned long startMillis;
unsigned int iter = 0;
unsigned int iterStart = 0;

void setup(){
  GLCD.Init(NON_INVERTED);   // initialise the library
  GLCD.ClearScreen();
  GLCD.ClearScreen();
  GLCD.SelectFont(System5x7);       // select fixed width system font

  GLCD.DrawRect(0, 0, 127, 63, BLACK);
  GLCD.CursorTo(2,1);
  GLCD.Puts("IDENTIFICADOR");
  GLCD.CursorTo(3,3);
  GLCD.Puts("E BLOQUEADOR");
  GLCD.CursorTo(4,5);
  GLCD.Puts("DE CHAMADAS");
}
void loop(){}

Dicas

  • Você pode usar um Potenciômetro com outros valores além de 10kOhms. O único problema é que será difícil fazer a regulagem. Resistores em série ou paralelo podem servir para ajudar.
  • A biblioteca GLCD permite que você use imagens de 64×64 bmp e as converta para serem exibidas no display, muito interessante isso!
  • Outros pinos podem ser usados para conectar o Arduino ao display LCD, nunca se restrinja aos exemplos encontrados na internet. No entanto, precisará alterar arquivos de cabeçalho para que funcione, no Mega o arquivo é: ks0108_Mega.h

Conclusão

Antes de começar, parecia quase impossível a tarefa de conectar um display LCD “desse tamanho” no Arduino e fazer tudo funcionar. Em menos de uma hora desde o início consegui fazer o primeiro teste e vi, mais uma vez, o quão simples é trabalhar com Arduino.

Referências

[1] http://www.arduino.cc/playground/Code/GLCDks0108

[2] http://www.satistronics.com/myfiles/file/LCD/RT12864J-1.pdf

http://www.topwaydisplay.com/Pub/Manual/LM12864MBC-Manual-Rev0.1.pdf

Comments

  1. By giovan

    Responder

  2. Responder

  3. By giovan

    Responder

    • Responder

  4. By Rafael Bertolucci

    Responder

    • Responder

  5. By Joao Thomazinho

    Responder

  6. By Joao Thomazinho

    Responder

    • Responder

  7. By Tomaz

    Responder

    • Responder

  8. By Dey Neto

    Responder

  9. By Lucas

    Responder

    • Responder

  10. By Rafael

    Responder

  11. By Rafael

    Responder

    • Responder

  12. By vagner

    Responder

    • Responder

      • By Natalia

        Responder

        • Responder

          • By Natalia

  13. By Adelson

    Responder

  14. By Erickson

    Responder

    • Responder

  15. By marco aurelio mol

    Responder

    • Responder

  16. By Lucas

    Responder

    • Responder

  17. By j soares

    Responder

  18. By j soares

    Responder

  19. By Roberto Carlos

    Responder

    • Responder

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *