fbpx

Como Utilizar o Shield Display 16×02 LCD com Teclado no Arduino

O LCD, ou display de cristal líquido, é uma tela de interface e comunicação visual comumente usado em aparelhos eletrônicos, como aparelhos domésticos, automóveis, dispositivos de jogos, instrumentos de medição, calculadoras e outros.

O Shield Display 16×02 LCD Keypad com Teclado (Figura 1) dispõe de um display 16 x 2 (16 colunas x 2 linhas), sendo capaz de exibir até 16 caracteres. Além disso, este Shield possui um teclado com 6 botões do tipo push-button, que podem nos mais diversos projetos.

A principal vantagem do uso do Shield Display 16×02 LCD Keypad com Teclado é que ele pode ser conectado diretamente no Arduino UNO, Duemilanove ou MEGA, não sendo necessário solda ou protoboard.

O teclado do Shield Display 16×02 LCD Keypad com Teclado é composto por 6 botões de comando – SELECT, LEFT, UP, DOWN e RIGHT, e um botão RESET.

Outro ponto positivo desse Shield que seu teclado utiliza apenas um canal ADC, economizando os recursos de entrada/saída digital. O valor da tecla é lido através de um divisor de tensão de 5 estágios, sendo possível detectar o botão pela porta ADC devido sua voltagem específica.

Shield Display LCD 16 x 2 com Teclado para Arduino
Figura1: Shield Display LCD 16 x 2 com Teclado para Arduino


Agora que já conhecemos um pouco sobre o Shield, vamos aprender a usá-lo!

A proposta prática deste projeto será: Utilizar o Shield Display 16×02 LCD Keypad com Teclado em conjunto com o Arduino para exibir a mensagem “BLOG DA ROBOTICA” na primeira e “SHIELD DISPLAY” na segunda linha.

Além disso, o Shield deverá informar quando um botão pressionado, exibindo a mensagem “APERTOU O BOTAO” na primeira linha e a informação do botão na segunda linha.


MATERIAIS NECESSÁRIOS


1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
1 x Cabo USB;
1 x Shield Display 16×02 LCD Keypad com Teclado


ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES

Acople o Shield Display 16×02 LCD Keypad com Teclado ao Arduino, conforme a Figura 2.

Modo de uso do Shield Display LCD 16x2 com teclado para Arduino
Figura 2 – Shield Display LCD 16 x 2 com teclado conectado ao Arduino.

ELABORANDO O CÓDIGO

Inicialmente, vamos entender a lógica de programação a partir dos seguintes passos:

1. Incluir a biblioteca LiquidCrystal:
A biblioteca LiquidCrystal permite que uma placa Arduino controle displays LCD baseados no controlador HD44780 ou compatível, usado em nosso Shield Display LCD. Essa biblioteca é nativa do Arduino IDE.
Para saber mais sobre a biblioteca acesse: www.arduino.cc/en/Reference/LiquidCrystal

2. Criar variável:
Vamos criar uma variável do tipo LiquidCrystal para indicar os pinos do display LCD que estão conectados ao Arduino. As variáveis e pinos do Arduino responsáveis pelo controle do display são:

VariávelPino do Arduino
rs8
en9
D44
D55
D66
D77
Tabela 1 – Variáveis e pinos do Arduino.

3. Função setup ():
Iniciamos a função setup () definindo o número de colunas e linhas do display LCD. Em seguida, passaremos a instrução para escrever “BLOG DA ROBOTICA” na primeira e “SHIELD DISPLAY” na segunda linha do display.

4. Funções para informar botão pressionado:
Vamos escrever uma função para cada botão do Shield Display LCD 16 x 2. A função deve ser chamada quando o seu botão correspondente for pressionado, por exemplo: Quando o botão “UP” for pressionado, a função up() será chamada.

5. Função loop ():
Na função principal, realizaremos a leitura dos botões através do pino analógico A0 do Arduino.
Cada botão possui um resistor com valor diferente, gerando um nível de tensão diferente na entrada do pino analógico A0. A partir desse valor, conseguimos identificar qual botão foi pressionado.

/*
  ---   SHIELD DISPLAY 16 X 2 KEYPAD COM TECLADO    ---
  =====================================================
  ==== BLOG DA ROBOTICA - www.blogdarobotica.com =====
  =====================================================
  Autor: Carol Correia Viana
  E-mail: contato@blogdarobotica.com
  Facebook: facebook.com/blogdarobotica
  Instagram:@blogdarobotica
  YouTube: youtube.com/user/blogdarobotica
  =====================================================
  ==== CASA DA ROBOTICA - www.casadarobotica.com ====
  =====================================================
  Facebook: facebook.com/casadaroboticaoficial
  Instagram:@casadarobotica
  =====================================================
*/

#include <LiquidCrystal.h> //Inclui a biblioteca

const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;//Pinos para ligar o display
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);//Define os pinos que serão usados para ligar o display

void setup() {

  lcd.begin(16, 2);//Define o número de colunas e linhas do display
  lcd.setCursor(0, 0);//Define o cursor para a coluna 0, linha 0
  lcd.print("BLOG DA ROBOTICA");
  lcd.setCursor(0, 1);//Define o cursor para a coluna 0, linha 1
  lcd.print(" SHIELD DISPLAY ");
  Serial.begin(9600);
}

//Função para botão select
void select() {
  lcd.clear();
  lcd.setCursor(0, 0);//Define o cursor para a coluna 0, linha 0
  lcd.print("APERTOU O BOTAO");
  lcd.setCursor(0, 1);//Define o cursor para a coluna 0, linha 1
  lcd.print("     SELECT     ");
}

//Função para botão left
void left() {
  lcd.clear();
  lcd.setCursor(0, 0);//Define o cursor para a coluna 0, linha 0
  lcd.print("APERTOU O BOTAO");
  lcd.setCursor(0, 1);//Define o cursor para a coluna 0, linha 1
  lcd.print("      LEFT      ");
}

//Função para botão up
void up() {
  lcd.clear();
  lcd.setCursor(0, 0);//Define o cursor para a coluna 0, linha 0
  lcd.print("APERTOU O BOTAO");
  lcd.setCursor(0, 1);//Define o cursor para a coluna 0, linha 1
  lcd.print("       UP       ");
}

//Função para botão down
void down() {
  lcd.clear();
  lcd.setCursor(0, 0);//Define o cursor para a coluna 0, linha 0
  lcd.print("APERTOU O BOTAO");
  lcd.setCursor(0, 1);//Define o cursor para a coluna 0, linha 1
  lcd.print("      DOWN      ");
}

//Função para botão right
void right() {
  lcd.clear();
  lcd.setCursor(0, 0);//Define o cursor para a coluna 0, linha 0
  lcd.print("APERTOU O BOTAO");
  lcd.setCursor(0, 1);//Define o cursor para a coluna 0, linha 1
  lcd.print("     RIGHT      ");
}

void loop() {
  Serial.println(analogRead(0));//Exibe a leitura do pino analógico A0 no monitor serial
  delay(100);

  if ((analogRead(0)) < 80) { //Se a leitura for menor que 80 chama a função right
    right();
  }
  else if ((analogRead(0)) < 200) {//Se a leitura for menor que 200 chama a função up
    up();
  }
  else if ((analogRead(0)) < 400) {//Se a leitura for menor que 400 chama a função down
    down();
  }
  else if ((analogRead(0)) < 600) {//Se a leitura for menor que 600 chama a função left
    left();
  }
  else if ((analogRead(0)) < 800) {//Se a leitura for menor que 800 chama a função left
    select();
  }
}

Vídeo 1: Funcionamento do Projeto.

Observação: Caso o display permaneça apenas com a luz de fundo acesa após o upload do código. Realize o ajuste do contraste girando no sentido horário o parafuso do trimpot azul. Utilize uma chave de fenda. Gire muitas e muitas vezes, rsrs.

Espero ter ajudado,

Obrigada a todos e em caso de dúvidas deixe seu comentário abaixo!

Att. Carol Correia Viana

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.