Como utilizar o Display LCD Shield com Teclado para Arduino 2

O Display LCD Shield com Teclado é uma opção compacta para incluir uma interface homem-máquina nos seus projetos com Arduino. Basta encaixar o shield em uma placa Arduino para acrescentar ao seu projeto um display alfanumérico e cinco teclas. Conectores de expansão no shield dão acesso aos demais pinos do Arduino para ligação de sensores e atuadores.

Display LCD Shield com Teclado - Imagem 01

Este shield pode ser usado em qualquer projeto onde você precise apresentar informações e receber comandos do operador.  Alguns exemplos de projeto onde você pode usar este shield: temporizador/despertador, controle numérico de máquinas, controle de LEDs endereçáveis e até jogos simples.

Material Necessário

Descrição do Display LCD Shield com Teclado

O Hardware é composto de três blocos: Display, Teclado e Conectores de Expansão. Veja a imagem abaixo:

Display LCD Shield com Teclado (hardware) - Imagem 02

Display

O shield contém um display alfanumérico de 2 linhas de 16 colunas, com backlight azul. Ao ser encaixado, o shield necessariamente ocupa alguns pinos do Arduino que serão dedicados ao display. Segue as conexões para operação no modo 4 bits:

Sinal do Display Pino do Arduino
D4 D4
D5 D5
D6 D6
D7 D7
RS D8
E D9
R/W GND (só escrita)

Como esta é uma configuração padrão, devemos informar estes pinos na definição do objeto LiquidCrystal, como veremos no exemplo.

Além dos pinos citados acima, o pino D10 do Arduino controla o backlight do display. Quando o pino D10 estiver em nível alto o backlight estará aceso; quando estiver em nível baixo o backlight estará apagado.

O potenciômetro no canto superior esquerdo deve ser usado para acertar o contraste do display. Use uma chave de fenda para girar o parafuso até que os caracteres estejam com destaque desejado do fundo.

Botões

O shield possui cinco botões para interação com o operador. O shield possui as legendas Up, Down, Left, Right e Select, entretanto, você tem a liberdade para definir a ação de cada botão de acordo com a sua aplicação.

Como estratégia para economizar portas digitais, a leitura dos botões é feita através de parâmetros analógicos. Os cinco botões estão ligados à entrada analógica A0 através de resistores diferentes. Portanto o botão pressionado pode ser determinado através da tensão medida pelo ADC através de analogRead(A0), onde cada faixa de valor está associada a um botão conforme tabela abaixo:

Tecla Pressionada Faixa de Valores

Direita

< 50
Cima

>= 50 e < 150

Baixo

>= 150 e < 300
Esquerda

>= 300 e < 500

Select

>= 500 e < 750

(nenhuma)

>= 750

O shield possui também um botão de Reset, que funciona da mesma forma que o botão de reset do Arduino.

Conectores de Expansão

Quatro conectores permitem ligar outros dispositivos aos pinos não utilizados do Arduino.

Display LCD Shield com Teclado (expansores) - Imagem 03 Entretanto, os conectores não vem montados no shield, você pode soldar o que for mais apropriado ou mesmo soldar fios diretamente a eles.

Exemplo de uso do Display LCD Shield com Teclado

Neste exemplo, será mostrado no display qual tecla foi pressionada no teclado.

Para controle do display vamos usar a biblioteca padrão de LCD do Arduino (LiquidCrystal). A leitura das teclas é feito testando o valor retornado por analogRead(A0) com os vários limites que são armazenados em uma tabela.


#include <LiquidCrystal.h>

// Define as conexões e cria o objeto para acesso
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
const int backLight = 10;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

// Limites para detecção das teclas, em ordem crescente
struct {
  int limite;
  char *nome;
} teclas[] = {
  {   50, "Direita " },
  {  150, "Cima    " },
  {  300, "Baixo   " },
  {  500, "Esquerda" },
  {  750, "Select  " },
  { 1024, "        " }  // nenhuma tecla apertada
};

// Iniciação
void setup() {
  //Progama o pino de backlight como saída
  pinMode(backLight, OUTPUT);
  // Inicia o display e coloca uma mensagem
  lcd.begin(16, 2);
  lcd.print("SuperMaker");
  // Acende o backlight
  digitalWrite(backLight, HIGH);
}

// Laço principal
void loop() {
  static int teclaAnt = -1;   // última tecla detectada

  // Lê a tensão no pino A0
  int leitura = analogRead(A0);

  // Identifica a tecla apertada pela tensão lida
  int teclaNova;
  for (teclaNova = 0; ; teclaNova++) {
    if (leitura < teclas[teclaNova].limite) {
      break;
    }
  }

  // Atualiza a tela se pressionou uma nova tecla
  if (teclaNova != teclaAnt) {
    lcd.setCursor(0,1);
    lcd.print(teclas[teclaNova].nome);
    teclaAnt = teclaNova;
  }

  // Dá um tempo antes do próximo teste
  delay (100);
}

Conclusão

O Display LCD Shield com Teclado é uma opção prática, simples e muito versátil de acrescentar uma interface de usuário ao seu projeto com Arduino.

Agora que você já conhece o  Display LCD Shield com Teclado e sabe como usá-lo, que tal testar algum projeto com ele?

Gostou do artigo? Deixe seu comentário logo abaixo dizendo o que achou. Para mais artigos e tutorias de projetos acesse nosso blog.

Faça seu comentário

Acesse sua conta e participe

2 Comentários

  1. Bacana.
    Funciona a idéia para outros tipos deLCD.
    Ex, o Sharp usado em aparelhos de fax com teclado numérico e de funções…
    LCD :RUNTZ2034XH01,
    TG5V-094V-O, GPM017A.
    TECLADO:F3129XH-O4.

    1. Cid,

      Infelizmente não temos essa informação sobre o modelo descrito 🙁

      Abraços e cuide-se com o COVID-19!
      Diogo – Equipe MakerHero