Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Teclado Matricial

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

Arduino.

Teclado matricial

TECLADO MATRICIAL 4x4 Col1 Col2 Col3 Col4

Información: http://www.prometec.net/teclados-matriciales/
Fila1
Un teclado es una matriz de teclas organizadas en filas y
columnas. Suelen ser de 4x4, como el de la figura, pero si
Fila2
no pensamos utilizar las letras, podemos olvidarnos de la
columna 4 y ahorramos el uso de un pin de Arduino. Fila3
Para utilizar este teclado con Arduino utilizamos la librería
Keypad. La podemos descargar de: Fila4

http://playground.arduino.cc/Code/Keypad#Download
Antes de describir las principales funciones de esta librería
veamos un ejemplo.
Ejemplo: este programa lee la tecla pulsada y la escribe en
el monitor serie.
F1 F2 F3 F4 C1 C2 C3 C4

Hay que tener en cuenta que todos los signos leídos del teclado son caracteres, no números, por
lo que no se pueden hacer operaciones con ellos, como sumas o comparaciones con > o <. Para
ello los tendríamos que convertir en números. Una forma fácil para los números de 0 a 9 es
definir una variable tipo int y realizar la operación de restarle 48 o bien el carácter ‘0’ a la variable

Tecnología. IES Bellavista 1/6


Arduino. Teclado matricial

que guarda el carácter (la variable tecla en este ejemplo), ya que con ello se pasa del código
ASCII del carácter numérico al valor numérico. Es decir, las instrucciones serían:

o bien:

Nota: El código ASCII del carácter ‘0’ es 48.


Si vamos a utilizar sólo los números del
teclado, podemos definir un teclado con 3
columnas. Así nos ahorramos un pin de
Arduino.

LIBRERÍA KEYPAD
La librería Keypad dispone de varias
funciones. Las que más usaremos son:
Keypad
Crea un objeto tipo Keypad para controlar nuestro teclado.
La sintaxis es: Keypad Teclado = Keypad (makeKeymap (teclas), pinF, pinC, nF, nC)
donde:
− Teclado: es el nombre que le damos al objeto tipo Keypad creado.
− teclas: es el nombre de una matriz bidimensional de caracteres previamente definida
donde asociamos un carácter a cada una de las teclas del teclado.
− pinF: es una matriz unidimensional previamente definida donde hemos indicado los pines
donde van conectadas las columnas del teclado en el orden F1, F2, F3 y F4.
− pinC: es una matriz unidimensional previamente definida donde hemos indicado los pines
donde van conectadas las filas del teclado en el orden C1, C2, C3 y C4.
− nF: es un número o una variable que contiene el número de filas del teclado.
− nC: es un número o una variable que contiene el número de columnas del teclado.

.getKey()
Lee y devuelve el carácter correspondiente a la tecla presionada si se ha presionado alguna. Si
no se ha pulsado ninguna tecla devuelve un 0.
La sintaxis es: Teclado.getKey()
donde Teclado es el nombre del objeto tipo Keypad.

.waitForKey()
Esta función esperará indefinidamente hasta que alguien pulsa una tecla. Esto significa que el
resto del código no se ejecuta durante la espera, salvo que se trate de una rutina de interrupción;
le ocurre lo mismo que a la función delay(). Una vez presionada la tecla, la función lee y
devuelve el carácter correspondiente a la tecla presionada.
La sintaxis es: Teclado.waitForKey() donde Teclado es el nombre del objeto tipo Keypad.

Tecnología. IES Bellavista 2/6


Arduino. Teclado matricial

CAPTURA DE VARIAS PULSACIONES


Habrá ocasiones en las que nos interese capturar varias pulsaciones para formar cadenas de
caracteres. Por ejemplo, para teclear una clave de acceso para que se abra una puerta.
En este caso definiremos variables tipo cadena (String) a las cuales se puede acceder de forma
independiente a cada carácter de la cadena e iremos introduciendo los caracteres pulsados en el
teclado.
Ejemplo: Este programa lee el teclado de forma constante. Cuando se pulsa la tecla # captura
los caracteres correspondientes a las tres siguientes teclas pulsadas y sustituye con ellos los
caracteres de la cadena clave. A continuación, imprime la clave y, en caso de que ésta coincida
con alguna de las claves válidas contenidas en la matriz de cadenas claves_validas, muestra el
mensaje “Esta clave es válida” y así sucesivamente.

Tecnología. IES Bellavista 3/6


Arduino. Teclado matricial

USO SIMULTÁNEO DEL TECLADO PARA INTRODUCIR CLAVES Y PARA ACTIVAR Y


DESACTIVAR SALIDAS POR PULSACIÓN DIRECTA DE TECLAS.
En algunos proyectos donde disponemos de teclado, puede interesarnos que determinadas
salidas se activen y/o desactiven mediante claves de varios dígitos (por ejemplo desactivación
de sistema de alarma, apertura de puertas de acceso, etc.) mientras que otras salidas queremos
que se activen mediante la simple pulsación directa de una tecla (por ejemplo luces, un
ventilador, activación de sistema de alarma, etc.). Para ello, una buena opción es reservar las
teclas alfabéticas del teclado (A, B, C y D) para órdenes directas, las teclas # y * para indicar que
iniciamos la introducción de una clave numérica y las teclas numéricas para las claves.
Con este sistema sólo podríamos ordenar cuatro acciones de forma directa con una sola tecla. Si
quisiéramos más tendríamos que recurrir a la pulsación de dos teclas, por ejemplo A1, A2,…
Ejemplo
En este ejemplo el programa lee el teclado continuamente; las teclas A, B, C y D se reservan
para funciones directas. La tecla # se utiliza para indicar que se va a introducir una clave
numérica de tres dígitos. La tecla * para indicar que se va a introducir una clave de un dígito.
Para este caso concreto sólo se le ha dado función a la tecla alfabética A, que enciende y apaga
un LED conectado al pin 10. Las otras teclas alfabéticas se han dejado sin función.
La tecla # inicia la introducción de una clave de 3 dígitos. Si es correcta (hay tres claves
correctas) encenderá o apagará un LED situado en el pin 11. Si no es correcta no hará nada.
La tecla * inicia la introducción de una clave de 1 dígito. Si el dígito es 1 encenderá o apagará un
LED conectado en el pin 12, si es un 2 encenderá o apagará un LED conectado al pin 13 y si es
otro número no hará nada.
Nota importante: en este programa no podemos utilizar la función .waitForKey() para leer el
teclado, como hicimos en el anterior ejemplo, pues una vez que empezáramos a introducir la
clave numérica hasta que termináramos, el programa no respondería a las órdenes dadas por
las teclas directas.

Tecnología. IES Bellavista 4/6


Arduino. Teclado matricial

Tecnología. IES Bellavista 5/6


Arduino. Teclado matricial

Tecnología. IES Bellavista 6/6

También podría gustarte