Anteriormente mostramos un ejemplo de LCD 16x2 con un modulo I2C, bueno como mencione antes ayudo a un amigo con su proyecto, el cual es una incubadora de huevos, por el momento vamos a seguir con otros ejemplos y toca el turno de usar un teclado matricial de 4x4 (de esos que ya venden), todo esto con con el propósito de que al final se conozca o se pueda utilizar todas y cada una de las secciones que llevara nuestro proyecto. Una vez mas mi objetivo no es mostrar como esta hecha la librería, es compartir la referencia para que ustedes puedan experimentar mas en el tema, por cierto un agradecimiento a Christopher Andrews por compartir su librería, al final el enlace.
Circuito:
El diagrama utilizado es sencillo, como se menciono antes se va a utilizar un modulo I2C basado en el PCF8574, bueno únicamente necesitamos conectar el pin SDA del modulo al pin A4 del arduino y el pin SCL al pin A5, los otros dos pines pues son VCC y GND, para fácil acceso del teclado matricial hemos usado desde D5 a D12 del arduino y las conexiones quedaron de la siguiente forma; L1-D12, L2-D11, L3-D10, L4-D9, C1-D8, C2-D7, C3-D6 y C4-D5.
Código:
El código que hace posible esto es el siguiente:
Resultado:El código que hace posible esto es el siguiente:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/******************************************************************************* | |
* | |
* Mostrar datos de teclado matricial 4x4 en una LCD16x2 | |
* | |
******************************************************************************* | |
* FileName: NANO_KeyPad4x4_LCD16x2.ino | |
* Processor: ATmega328 | |
* Complier: Arduino v1.8.3 | |
* Author: Pedro Sánchez (MrChunckuee) | |
* Blog: http://mrchunckuee.blogspot.com/ | |
* Email: mrchunckuee.psr@gmail.com | |
* Description: Ejemplo basico para mostrar datos de teclado matricial 4x4 | |
* en una LCD16x2. | |
******************************************************************************* | |
* Rev. Date Comment | |
* v0.0.0 16/07/2019 Creación del firmware | |
******************************************************************************/ | |
#include <Wire.h> | |
#include <LiquidCrystal_I2C.h> | |
#include <Keypad.h> | |
const byte rowsCount = 4; | |
const byte columsCount = 4; // Se usa teclado 4x4 | |
char keys[rowsCount][columsCount] = { //Se definen los valores de nuestra matriz | |
{ '1','2','3', 'A' }, | |
{ '4','5','6', 'B' }, | |
{ '7','8','9', 'C' }, | |
{ '*','0','#', 'D' } | |
}; | |
const byte rowPins[rowsCount] = { 12, 11, 10, 9 }; //Pines donde estan las filas | |
const byte columnPins[columsCount] = { 8, 7, 6, 5 }; //Punes donde estan las columnas | |
LiquidCrystal_I2C lcd(0x27,16,2); //Dirección 0x27 y 16 columnas x 2 filas | |
Keypad keypad = Keypad(makeKeymap(keys), rowPins, columnPins, rowsCount, columsCount); | |
void setup() { | |
lcd.init();// Inicializar el LCD | |
lcd.backlight();//Encender la luz de fondo. | |
lcd.clear(); | |
// Escribimos el Mensaje en el LCD. | |
lcd.print("KeyPad + LCD16x2"); | |
lcd.setCursor(0,1); | |
lcd.print(" MrChunckuee! "); | |
delay(2000); //Solo por que me da hueva pensar en otra forma ahorita | |
lcd.clear(); | |
lcd.print("Pulsa un boton"); | |
} | |
void loop() { | |
char key = keypad.getKey(); //Se lee boton pulsado | |
if (key) { | |
lcd.setCursor(0,1); lcd.print(key); // Se muestra en (0,1) de la LCD | |
} | |
} |
Aquí una foto del un ejemplo de tecla pulsada.
Descargas:
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible.
Donaciones:
Si te gusta el contenido o si los recursos te son de utilidad, comparte el enlace en tus redes sociales o sitios donde creas que puede ser de interés y la otra puedes ayudarme con una donación para seguir realizando publicaciones y mejorar el contenido del sitio. También puedes hacer donaciones en especie, ya sea con componentes, tarjetas de desarrollo o herramientas. Ponte en contacto para platicar, o puedes volverte uno de nuestros sponsors.
Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, así también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.
- Christopher Andrews, "Libreria Keypad", https://github.com/Chris--A/Keypad
- Pedro Sánchez Ramírez, "Arduino: Uso básico de LCD16x2 con modulo I2C", https://mrchunckuee.blogspot.com/2019/07/Arduino-009.html
0 Comentarios