Código de Pesquisa

1602 LCD Keypad Shield: Código Básico

1602 LCD Keypad Shield: Código Básico

Neste tutorial, vamos explorar como programar e utilizar um 1602 LCD Keypad Shield com um Arduino. Este shield conta com um display de 16 caracteres por 2 linhas e um teclado que permite várias funcionalidades de entrada. Ao final deste guia, você será capaz de exibir mensagens e responder de forma eficaz aos pressionamentos de tecla.

O foco será criar um programa simples que detecte pressionamentos de tecla e exiba as mensagens correspondentes no LCD. Você pode acompanhar o vídeo para uma demonstração visual (no vídeo em 03:00).

Hardware Explicado

O componente principal desta montagem é o 1602 LCD Keypad Shield. Este shield conecta-se diretamente à placa Arduino e fornece tanto um display quanto um teclado para interação do usuário. O LCD pode exibir mensagens de texto, enquanto o teclado permite que os usuários selecionem opções por meio de vários botões.

O teclado funciona usando uma entrada analógica, que o Arduino lê para determinar qual botão está pressionado. Cada botão tem uma resistência única, permitindo que o microcontrolador identifique o botão com base no valor analógico recebido do sensor.

Detalhes da ficha técnica

FabricanteGenérico
Número da peçaShield com LCD 1602 e teclado
Tensão lógica/E/S5 V
Tensão de alimentação5 V
Corrente de saída (por canal)2 mA
Corrente de pico (por canal)20 mA
Orientações sobre a frequência PWMNão aplicável
Limiares da lógica de entrada0.3 Vccaté 0.7 Vcc
Queda de tensão / RDS(ligado)/ saturaçãoNão aplicável
Limites térmicos70 °C
PacoteFormato do escudo
Notas / variantesCompatível com Arduino Uno

  • Certifique-se de que o LCD esteja alimentado com 5 V para evitar danos.
  • Use resistores pull-up adequados para o teclado, se necessário.
  • Aplique debounce às pressões de tecla no código para evitar múltiplos acionamentos.
  • Monitore os limites de corrente para evitar o superaquecimento.
  • Teste as conexões antes de ligar o circuito.

Instruções de fiação

Para conectar o 1602 LCD Keypad Shield, basta encaixá-lo diretamente na placa Arduino. O shield foi projetado para alinhar-se com a configuração de pinos do Arduino Uno. Certifique-se de que os pinos estejam bem conectados.

Os botões do teclado conectam-se ao pino de entrada analógica A0. As linhas de dados do LCD são gerenciadas internamente pela biblioteca utilizada, então você não precisará conectá-las separadamente. O shield também usa alguns pinos digitais para controlar a retroiluminação e outras funcionalidades, que são pré-definidos pela biblioteca. Se você seguir a documentação da biblioteca, verá que ela normalmente gerencia essas conexões automaticamente.

Exemplos de Código e Tutorial

No código, primeiro incluímos a biblioteca necessária para controlar o LCD:

#include <LCD4Bit_mod.h>

Esta biblioteca facilita a comunicação com o LCD 1602. Em seguida, criamos uma instância do objeto LCD com o número de linhas especificado.

Em seguida, inicializamos o LCD emsetup()função:

lcd.init();

Esta linha prepara o LCD para uso. Após a inicialização, podemos exibir uma mensagem de teste usando olcd.printIn()função.

No loop principal, lemos a entrada analógica para detectar pressionamentos de tecla:

adc_key_in = analogRead(0);

Esta linha lê o valor do teclado. O valor ajuda a determinar qual tecla foi pressionada usando oget_key()função que converte o valor do ADC em um número de tecla.

Demonstração / O que esperar

Ao executar o código, pressionar os botões exibirá mensagens correspondentes à tecla pressionada no LCD. Por exemplo, ao pressionar a tecla direita será exibido "Right Key OK" no display (no vídeo em 05:30). Se a detecção das teclas não estiver funcionando corretamente, verifique a fiação e certifique-se de que as bibliotecas corretas estejam incluídas no seu Arduino IDE.

Marcas de tempo do vídeo

  • 00:00- Introdução
  • 03:00- Visão geral do código
  • 05:30- Demonstração de pressionamento de tecla
18-Source code for a 602 LCD keypad shield for Arduino
Idioma: C++
/*
 * Text:
 */
#include <LCD4Bit_mod.h>
 // Crie um objeto para controlar um LCD.
 // Número de linhas na tela = 1
LCD4Bit_mod lcd = LCD4Bit_mod(2);

 // Mensagens principais
char msgs[5][15] = {"Right Key OK ",
                    "Up Key OK    ",
                    "Down Key OK  ",
                    "Left Key OK  ",
                    "Select Key OK" };
int  adc_key_val[5] ={30, 150, 360, 535, 760 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;

void setup() {
  pinMode(13, OUTPUT); // Usaremos o LED de depuração para emitir um sinal de batimento cardíaco.

  lcd.init();
 // Opcionalmente, agora configure as configurações de exibição específicas do nosso aplicativo, sobrescrevendo o que o LCD fez em lcd.init()
 // lcd.commandWrite(0x0F);// Cursor ligado, display ligado, piscar ligado. (Aterrorizante!)
   lcd.clear();
  lcd.printIn("Robojax.com Testing");

}

void loop() {

	adc_key_in = analogRead(0); // Leia o valor do sensor
  digitalWrite(13, HIGH);
  key = get_key(adc_key_in); // Converter em pressão de tecla

	if (key != oldkey) // Se a tecla pressionada for detectada
	{
    delay(50); // Aguarde o tempo de debounce
		adc_key_in = analogRead(0); // Leia o valor do sensor
    key = get_key(adc_key_in); // Converter em pressão de tecla
    if (key != oldkey)
    {
      oldkey = key;
      if (key >=0){
      lcd.cursorTo(2, 0); // Linha = 2, x = 0
  			lcd.printIn(msgs[key]);
      }
    }
  }

 // delay(1000);
  digitalWrite(13, LOW);





}

 // Converter o valor do ADC para o número da chave
int get_key(unsigned int input)
{
	int k;

	for (k = 0; k < NUM_KEYS; k++)
	{
		if (input < adc_key_val[k])
		{

    return k;
        }
	}

    if (k >= NUM_KEYS)
        k = -1; // Nenhuma tecla válida pressionada

    return k;
}

Recursos e referências

Arquivos📁

Nenhum arquivo disponível.