Este tutorial es parte de: Teclados
Todos los videos del teclado se enumeran aquí.
1602 LCD Keypad Shield: Código básico
En este tutorial exploraremos cómo programar y utilizar un shield LCD 1602 con teclado en un Arduino. Este shield cuenta con una pantalla de 16 caracteres por 2 líneas y un teclado que permite diversas funcionalidades de entrada. Al final de esta guía, podrás mostrar mensajes y responder eficazmente a las pulsaciones de las teclas.
El enfoque estará en crear un programa sencillo que detecte pulsaciones de teclas y muestre mensajes correspondientes en la LCD. Puedes seguir el video para una demostración visual (en el video en 03:00).
Hardware explicado
El componente principal de este proyecto es el shield 1602 LCD Keypad. Este shield se conecta directamente a la placa Arduino y proporciona tanto una pantalla como un teclado para la interacción del usuario. El LCD puede mostrar mensajes de texto, mientras que el teclado permite a los usuarios seleccionar opciones mediante varios botones.
El teclado funciona mediante una entrada analógica, que el Arduino lee para determinar qué botón está presionado. Cada botón tiene una resistencia única, lo que permite al microcontrolador identificar el botón en función del valor analógico recibido del sensor.
Detalles de la hoja de datos
| Fabricante | Genérico |
|---|---|
| Número de pieza | Shield con pantalla LCD 1602 y teclado |
| Voltaje lógico/E/S | 5 V |
| Tensión de alimentación | 5 V |
| Corriente de salida (por canal) | 2 mA |
| Corriente de pico (por canal) | 20 mA |
| Guía sobre la frecuencia PWM | No aplica |
| Umbrales de la lógica de entrada | 0.3 Vcon copiaa 0,7 Vcc |
| Caída de tensión / RDS(en conducción)/ saturación | No aplica |
| Límites térmicos | 70 °C |
| Paquete | Formato de escudo |
| Notas / variantes | Compatible con Arduino Uno |
- Asegúrese de que la pantalla LCD esté alimentada a 5 V para evitar daños.
- Utilice resistencias pull-up adecuadas para el teclado si es necesario.
- Aplica debounce a las pulsaciones de teclas en el código para evitar múltiples activaciones.
- Vigila los límites de corriente para evitar el sobrecalentamiento.
- Compruebe las conexiones antes de energizar el circuito.
Instrucciones de cableado
Para cablear el Shield LCD 1602 con teclado, simplemente conéctelo directamente a la placa Arduino. El shield está diseñado para alinearse con la configuración de pines de un Arduino Uno. Asegúrese de que los pines estén conectados de forma segura.
Los botones del teclado se conectan al pin de entrada analógica A0. Las líneas de datos del LCD son gestionadas internamente por la biblioteca utilizada, por lo que no necesitarás cablearlas por separado. El shield también usa algunos pines digitales para controlar la retroiluminación y otras funciones, que están predefinidos en la biblioteca. Si sigues la documentación de la biblioteca, verás que normalmente gestiona estas conexiones automáticamente.
Ejemplos de código y guía paso a paso
En el código, primero incluimos la biblioteca necesaria para controlar la LCD:
#include <LCD4Bit_mod.h>Esta biblioteca facilita la comunicación con la pantalla LCD 1602. A continuación, creamos una instancia del objeto LCD con el número de líneas especificado.
A continuación, inicializamos la pantalla LCD en lasetup()función:
lcd.init();Esta línea prepara la pantalla LCD para su uso. Después de la inicialización, podemos mostrar un mensaje de prueba usando lalcd.printIn()función.
En el bucle principal, leemos la entrada analógica para detectar pulsaciones de teclas:
adc_key_in = analogRead(0);Esta línea lee el valor del teclado. El valor ayuda a determinar qué tecla se presionó usando elget_key()función que convierte el valor del ADC en un número de tecla.
Demostración / Qué esperar
Cuando ejecutes el código, al pulsar los botones se mostrarán mensajes en el LCD correspondientes a la tecla pulsada. Por ejemplo, al pulsar la tecla derecha se mostrará "Right Key OK" en la pantalla (en el video a las 05:30). Si la detección de teclas no funciona correctamente, comprueba el cableado y asegúrate de que las bibliotecas correctas estén incluidas en tu Arduino IDE.
Marcas de tiempo del video
- 00:00- Introducción
- 03:00- Descripción general del código
- 05:30- Demostración de pulsación de tecla
Este tutorial es parte de: Teclados
- Uso de un teclado 4x3 con Arduino
- Código y vídeo de Arduino para un teclado de cuatro teclas
- Código Arduino y vídeo: teclado matricial negro 4x4
- Build a Simple Electronic Lock with Keypad and LCD Using Arduino
- Controlling an 8-channel relay with a 4x3 keypad
- Cómo usar el 4x4 Soft Keypad con Arduino
- How to Use a 5x4 20-Key Keypad with Arduino to Detect Strings
- Lesson 67: Controlling an 8-Channel Relay with a Keypad Using Arduino
/*
* // Ejemplo de uso de la biblioteca LCD4Bit_mod
* // Descargado de https://github.com/douggilliland/lb-Arduino-Code/tree/master/libraries/LCD4Bit_mod
* // 1 de octubre de 2017. Este ejemplo funcionará con un escudo de teclado LCD 1602.
* // Código utilizado para un video de YouTube del canal Robojax
* // Mira el video https://youtu.be/naSSiS_9rEw
*/
#include <LCD4Bit_mod.h>
// Crea un objeto para controlar un LCD.
// Número de líneas en pantalla = 1
LCD4Bit_mod lcd = LCD4Bit_mod(2);
// Mensajes clave
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 el LED de depuración para emitir un latido.
lcd.init();
// Opcionalmente, ahora configure nuestros ajustes de pantalla específicos de la aplicación, anulando lo que hizo el LCD en lcd.init()
// lcd.commandWrite(0x0F);// Cursor encendido, pantalla encendida, parpadeo encendido. (¡Horrible!)
lcd.clear();
lcd.printIn("Robojax.com Testing");
}
void loop() {
adc_key_in = analogRead(0); // Lee el valor del sensor
digitalWrite(13, HIGH);
key = get_key(adc_key_in); // Convertir en pulsación de tecla
if (key != oldkey) // Si se detecta una pulsación de tecla
{
delay(50); // Espera el tiempo de debounce
adc_key_in = analogRead(0); // Lee el valor del sensor
key = get_key(adc_key_in); // Convertir en pulsación de tecla
if (key != oldkey)
{
oldkey = key;
if (key >=0){
lcd.cursorTo(2, 0); // Línea = 2, x = 0
lcd.printIn(msgs[key]);
}
}
}
// delay(1000);
digitalWrite(13, LOW);
}
// Convierte el valor ADC a número clave
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; // No se presionó ninguna tecla válida
return k;
}
Recursos y referencias
-
ExternoLibrería Arduion LCD4Bit_mod (getHub)github.com
Archivos📁
No hay archivos disponibles.