O shield LCD 16×2 com Keypad (ou teclado, se preferir) é um componente útil se quisermos montar algum tipo de painel que necessite de entrada de dados ou controle por meio de botões. Pode ser utilizado para digitar uma senha, selecionar uma opção em um menu ou até mesmo controlar os passos de um robô.

shield lcd 16x2 Arduino

Este shield possui um display LCD 16×2 com backlight (luz de fundo) azul, e 5 botões customizáveis, além de um botão de reset do Arduino. O ajuste do contraste é feito pelo parafuso do trimpot/potenciômetro acima do display, à esquerda (em azul). Além disso, a placa possui furos para soldagem de barras de pinos, cuja função veremos em breve.

Shield LCD 16×2 com Keypad: características e pinagem

O shield utiliza alguns pinos diferentes dos que usamos normalmente nos projetos para ligar um LCD. Se na ligação de um LCD 16×2, como mencionado no artigo Display Lcd Winstar WH1602A, eu tenho total liberdade para trocar as portas ligadas ao display, nesse shield teremos que usar a seguinte sequência ao inicializar a biblioteca LiquidCrystal:

LiquidCrystal lcd(8,9,4,5,6,7); 

Desta forma, temos a seguinte relação entre os pinos do Arduino e os sinais do display:

Ligacao Arduino - Display LCD Keypad

Os botões do shield usam uma única porta analógica, A0. Repare na ilustração abaixo que o shield usa uma associação de resistores para determinar qual botão foi pressionado, e com isso há uma grande economia de portas digitais do Arduino:

Circuito resistores - botões shield keypad

Isso tudo faz com que, obviamente, não possamos utilizar essas portas para outras funções enquanto estivermos utilizando o shield. Note no detalhe das imagens abaixo, que a placa possui furos que permitem a soldagem de uma barra de pinos ou conectores, com isso podemos usar os pinos que sobraram : 0, 1, 2, 3, 11, 12, 13 (digitais), e A1, A2, A3, A4, A5 (analógicos), além dos pinos de energia (5v, 3.3v, GND). O pino 10 também é utilizado pela placa para uma função específica, no caso o backlight, e não deve ser utilizado nos programas. 

Detalhe portas digitais
Detalhe portas analogicas e energia shield keypad

Para o programa de teste, não é necessário o uso de nenhuma biblioteca especial. Usaremos a já conhecida LiquidCrystal, e para determinar qual botão foi pressionado, faremos a leitura da porta analógica A0:

//Programa: Teste LCD 16x2 com Keypad
//Autor: Arduino e Cia
  
#include <LiquidCrystal.h>  
  
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  
  
void setup()   
{  
 lcd.begin(16, 2);  
 lcd.setCursor(0,0);  
 lcd.print("Arduino e Cia");  
 lcd.setCursor(0,1);  
 lcd.print("Tecla :");  
}  
  
void loop()  
{  
 int botao;  
 botao = analogRead (0);  //Leitura do valor da porta analógica A0
 lcd.setCursor(8,1);  
 if (botao < 100) {  
  lcd.print ("Direita ");  
 }  
 else if (botao < 200) {  
  lcd.print ("Cima    ");  
 }  
 else if (botao < 400){  
  lcd.print ("Baixo   ");  
 }  
 else if (botao < 600){  
  lcd.print ("Esquerda");  
 }  
 else if (botao < 800){  
  lcd.print ("Select  ");  
 }  
}

Lembrando que neste post utilizamos o shield LCD 16×2 com Keypad e Arduino Uno, mas vocë pode usar com outras placas da linha como por exemplo com Arduino Mega.

Avalie este post!