En este proyecto, aprenderemos a utilizar un teclado matricial 4x4 tipo membrana para controlar nuestros proyectos con Arduino.
Básicamente, un teclado es un periférico de entrada que consiste en un conjunto de teclas, las cuales se comportan como interruptores electrónicos que envían información cada vez que se presionan.
Básicamente, un teclado es un periférico de entrada que consiste en un conjunto de teclas, las cuales se comportan como interruptores electrónicos que envían información cada vez que se presionan.
Este tipo de teclado consiste en 3 membranas, de allí recibe su nombre. Dos membranas contienen material conductor de electricidad, y en medio de ellas hay una membrana no conductora que sirve para separarlas, la cual contiene un agujero donde va cada botón. Bajo condiciones normales, el interruptor se encuentra abierto porque la corriente no puede circular, pero cuando se presiona una tecla, la membrana de arriba y la de abajo hacen contacto a través del pequeño agujero que hay en la membrana del medio, permitiendo que la corriente circule y se envíe la información.
Que sea un teclado matricial, significa que usa el esquema de una matriz para agrupar los pulsadores, es decir, los organiza en filas y columnas, haciendo que cada pulsador tenga una posición única dentro de la matriz. Esto tiene la ventaja de que se necesiten menos pines del Arduino a la hora de conectar el teclado, pues con este sistema se utiliza un pin por cada fila y un pin por cada columna. En este proyecto utilizaremos un teclado 4x4, esto quiere decir que se utilizarán 8 pines del Arduino cuando lo vayamos a conectar.
El teclado se conecta a pines digitales del Arduino. Las columnas las conectaremos desde el pin digital 2 hasta el 5, y las filas irán conectadas desde el pin digital 6 hasta el 9, como se ve en el esquema:
Para la programación y uso del teclado, utilizaremos la librería Keypad, la cual puede ser descargada desde el IDE de Arduino. Vamos a Programa > Incluir librería > Gestionar Librerías. Allí se nos abre el gestor de librerías, buscamos: "keypad" y seleccionamos instalar a la que se muestra en la siguiente captura:
Nuestro primer ejemplo consiste en probar el teclado. Se realiza un código sencillo que se encarga de leer la tecla presionada y luego mostrarla en el monitor serie. A veces sucede que las lecturas no coinciden con las teclas que se están presionando, esto pasa cuando se conectan las filas donde van las columnas y viceversa. La prueba del teclado luce así:
El código de este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=1iUhNE77gn6B86T7jlcLirlV1Yh56dw5E
Nuestro segundo ejemplo, consiste en utilizar el teclado matricial junto con una pantalla LCD 16x2 con el fin de escribir en ella texto, números y símbolos. La escritura es muy similar a la que se reaizaba en los antiguos celulares donde se presionaba una tecla varias veces para escribir la letra/número/símbolo que se deseaba.
En este ejemplo, no se utiliza ningún delay() ya que esa función "congela" el programa que está ejecutando el Arduino, por lo cual hubiese sido un problema ya que se debe verificar todo el tiempo si se ha presionado alguna tecla. Como reemplazo del delay() utilizamos la función millis(), que consiste en un contador que almacena el tiempo (en milisegundos) transcurrido desde que el Arduino empieza a ejecutar el programa. La función millis() puede comportarse como un delay() pero sin bloquear el programa.
El teclado se conecta a los mismos pines digitales del primer ejemplo, la pantalla LCD la conectaremos a los pines análogos ya que no tenemos más espacio entre los pines digitales. Los pines análogos pueden comportarse como pines digitales sin ningún problema. A pesar de que en los proyectos suelo utilizar un Arduino Mega en donde hay pines de sobra, este lo realicé teniendo en cuenta a las personas que tienen el Arduino UNO, por lo tanto, este proyecto sirve en ambas placas. El esquema de conexiones queda de la siguiente manera (UNO y Mega):
El proyecto en funcionamiento se ve así:
El código de este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=1imBjlPhJK8Fa2ceQ35OvLQcK8X5mlgCx
Nuestro segundo ejemplo, consiste en utilizar el teclado matricial junto con una pantalla LCD 16x2 con el fin de escribir en ella texto, números y símbolos. La escritura es muy similar a la que se reaizaba en los antiguos celulares donde se presionaba una tecla varias veces para escribir la letra/número/símbolo que se deseaba.
En este ejemplo, no se utiliza ningún delay() ya que esa función "congela" el programa que está ejecutando el Arduino, por lo cual hubiese sido un problema ya que se debe verificar todo el tiempo si se ha presionado alguna tecla. Como reemplazo del delay() utilizamos la función millis(), que consiste en un contador que almacena el tiempo (en milisegundos) transcurrido desde que el Arduino empieza a ejecutar el programa. La función millis() puede comportarse como un delay() pero sin bloquear el programa.
El teclado se conecta a los mismos pines digitales del primer ejemplo, la pantalla LCD la conectaremos a los pines análogos ya que no tenemos más espacio entre los pines digitales. Los pines análogos pueden comportarse como pines digitales sin ningún problema. A pesar de que en los proyectos suelo utilizar un Arduino Mega en donde hay pines de sobra, este lo realicé teniendo en cuenta a las personas que tienen el Arduino UNO, por lo tanto, este proyecto sirve en ambas placas. El esquema de conexiones queda de la siguiente manera (UNO y Mega):
Gracias por la información :) ahora si entiendo como hacerlo
ResponderBorrarESTA CONECTADO UN POTENCIÓMETRO DE QUÉ VALOR ES?
ResponderBorrar10 K
BorrarExcelente proyecto. Hasta con el mismo teclado del computador se puede hacer.
ResponderBorrarme aparece error compilando el progama en arduino, debo descargar alguna libreria o algo asi
Borrarmire ratún, su mierda de código no abre. SALUDOS.
ResponderBorrarhola realice todos los pasos que indicas y el teclado me funciona bien, la pantalla energiza y enciende pero al escribir no se muestra nada en la pantalla podrías ayudarme ¿realice algo mal o me faltara algo por hacer?
ResponderBorrarpuede ser la direccion fisica de la pantalla lcd(0x3F,16,2); o tambien con 0x27. prueba con eso
BorrarME SUCEDE LO MISMO NO SE EN QUE PARTE DEL CÓDIGO, DEBO CORREGIR :(
Borrar¿Qué tal? Estoy usando una pantalla 4x20, hice los cambios en lcd.begin, pero no funciona, ¿hay algo más que deba realizar?
ResponderBorrar¡Muchas gracias!
Hola :) Tengo duda, como puedo ingresar un dato con teclado matricial, que se visualice en un lcd y que ese dato lo pueda guardar en una variable para después usarlo y después mostrarlo en la pantalla una vez que lo guarde?
ResponderBorrarHola! Tengo una pregunta, porque los teclado 4x4 vienen con el primer pin y el último vacío?
ResponderBorrarhola buenas tardes, una pregunta... como tendría que hacerlo si tengo el lcd conectado a un módulo i2c?
ResponderBorrarcomo podria hacerlo mostrando el mensaje en un DISPLAY MATRICIAL? no encunetro nada sobre eso :(
ResponderBorrarcomo podria hacerlo mostrando el mensaje en un DISPLAY MATRICIAL? no encuentro nada sobre eso :(
ResponderBorrarQue valor es la recistencia
ResponderBorrarQue valor es la recistencia
ResponderBorrarQue valor es la recistencia
ResponderBorrarde cuanto es la resistencia?
ResponderBorrar220 creo
Borrar