Sie sind auf Seite 1von 30

Tecnologías Emergentes

TECNOLOGÍAS EMERGENTES

Ing. Juan José Suárez Yupanqui


TECNOLOGÍAS EMERGENTES
MOTIVACIÓN

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES

Semana Quinta
Sesión Teórica 05

Tema:
Dispositivos: Teclado, ArduBlock

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES

Capacidades Terminales

 Reconocer la importancia del internet de las cosas.


 Manipular sensores Arduino.
 Identificar características de los sensores.
 Capturan señales y almacenan en bases de datos en la nube.
 Envían señales por redes WiFi.

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES

Competencia Específica de la Sesión

Al finalizar la sesión el alumno debe ser capaz de manejar Teclados


y el Software Gráfico ArduBlock

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES

Temas a Tratar

 Descripción de Teclados (Keypads).


 Software ArduBlock.

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Keypads
Un paso más allá en el uso de pulsadores son los
teclados (también llamados “keypads”).

4x4 4x3
En efecto, estos aparatos no son más que pulsadores
conectados entre sí de tal forma que, cuando alguno
de ellos es apretado, envía una código de tipo binario
a nuestra placa Arduino para que así esta pueda
reaccionar de la forma que nosotros deseemos
dependiendo del botón pulsado.
Ing. Juan J. Suárez Y.
TECNOLOGÍAS EMERGENTES
Keypads Esquema

4x4 Ing. Juan J. Suárez Y.


4x3
TECNOLOGÍAS EMERGENTES
Librería Keypad: ¿Qué es?

La Librería “Keypad” permite a las Tarjetas Arduino leer un


teclado de tipo matriz. Los teclados vienen en arreglos de
4x3, 4x4 y varias otras configuraciones con palabras, letras
y números escritos en las teclas.
Esta Librería es capaz de soportar todos esos.

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad: Identificación del Teclado
Primero necesitamos asignar un numero a cada uno de los terminales
que tenga nuestro teclado, la numeración va de izquierda a derecha
comenzando por el numero 1.

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad: Identificación de Terminales
Luego, con la ayuda de un medidor de continuidad (ohmmimetro)
averiguaremos qué terminales están conectados a qué teclas. Puede que
existan terminales sin usar y se pueden ignorar. Debemos obtener un
diagrama parecido al que se muestra seguidamente:

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad
La biblioteca no bloquea la ejecución del programa, lo que significa
que puede mantener presionada la tecla durante todo el día y su
Arduino continuará procesando el resto de su código.

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad

Abrir Código Adjunto en IDE Arduino

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad
Lo primero que hacemos es incluir en el código una librería llamada
Keypad, que implementa funcionalidades para facilitar la gestión de
teclados.
En la primera línea, incluimos la librería (suponiendo que ya la
hayamos instalado), del modo habitual:

#include <Keypad.h>

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad
Tenemos que definir el número de filas y columnas de nuestro teclado.
Ten en cuenta que, en nuestro ejemplo, estamos usando un teclado
matricial muy sencillito, para empezar a familiarizarnos con estas
técnicas. Nuestro teclado es de dieciséis teclas, con cuatro filas y cuatro
columnas.
const byte Filas = 4; //KeyPad de 4 filas
const byte Cols = 4; //y 4 columnas

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad
Ahora debemos indicar a que pines de la placa Arduino irán conectados
los hilos que corresponden a las filas, y los que corresponden a las
columnas del teclado.

byte Pins_Filas[] = {13, 12, 11, 10}; //Pines para las filas.
byte Pins_Cols[] = {7, 6, 5, 4}; // Pines para las columnas.

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad
Definimos una variable llamada pulsacion, que contendrá un registro
de la tecla que pulsemos en cada momento

char pulsacion;

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad
Ahora definimos una matriz con los distintos caracteres que incorpora
el teclado, así:

char Teclas [Filas][Cols] = {


{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
Ing. Juan J. Suárez Y.
TECNOLOGÍAS EMERGENTES
Librería Keypad
Se trata de una matriz de dos dimensiones. Es una matriz de datos de
tipo char, de modo que cada elemento de la misma tendrá un carácter.
Como va a tener dos dimensiones, al declararla establecemos dos
índices:
char Teclas [Filas][Cols]
Como las constantes Filas y Cols ya están previamente declaradas, esto
sería equivalente a haber puesto:
char Teclas [4][4]
Ing. Juan J. Suárez Y.
TECNOLOGÍAS EMERGENTES
Librería Keypad
Una matriz de dos dimensiones es una matriz de matrices. Cada
elemento de la primera matriz es, a su vez, una matriz:
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
En cada una de estas matrices, cada elemento es un carácter. Si te fijas,
la primera matriz contiene los caracteres de la primera fila del teclado,
la segunda matriz contiene los caracteres de la segunda fila del teclado,
y así sucesivamente. Ing. Juan J. Suárez Y.
TECNOLOGÍAS EMERGENTES
Librería Keypad
Para acceder a un elemento concreto de una matriz bidimensional
debemos indicar el nombre de la matriz, y los dos índices, como unas
coordenadas, teniendo en cuenta que, al igual que en las matices
unidimensionales, los índices empiezan a contar desde cero.
Por ejemplo, si accedemos al elemento Teclas[1][0], estaremos
accediendo a la matriz unidimensional declarada en la posición uno,
que es {'4','5','6','B'} y, dentro de esta, al elemento que hay en la
posición 0, es decir, el 4.

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad
A continuación, debemos definir un objeto de la clase Keypad, que
representará a nuestro teclado. Esto se hace empleando el constructor
de la clase, así:
Keypad Teclado1 = Keypad(makeKeymap(Teclas), Pins_Filas, Pins_Cols, Filas, Cols);

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad
Keypad Teclado1 = Keypad(makeKeymap(Teclas), Pins_Filas, Pins_Cols, Filas, Cols);
El objeto, en este ejemplo, lo hemos llamado Teclado1. El constructor recibe
cinco argumentos:
 El primero es la función makeKeymap que, a su vez, recibe como argumento
el nombre de la matriz bidimensional que hemos definido para los caracteres
de las teclas.
 El segundo argumento en el nombre de la matriz que incluye los pines donde
están conectadas las filas del teclado.
 El tercer argumento en el nombre de la matriz que incluye los pines donde
están conectadas las columnas del teclado.
 El cuarto argumento es el número de filas.
 El quinto y último es el número de columnas.
Ing. Juan J. Suárez Y.
TECNOLOGÍAS EMERGENTES
Librería Keypad
Método getKey()
pulsacion = Teclado1.getKey();
El método getKey() se ocupa de realizar la lectura
Toma nota que, la notación es la típica de la programación orientada a objetos:
Objeto.método().

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad
Método getKey()
 Si, en el momento de ejecutarse esta instrucción, no se está pulsando ninguna
tecla, el método getKey() devuelve un valor false.
 Si se está pulsando una tecla, el método getKey() devuelve el carácter que
aparece en la matriz que corresponda a la fila y columna de la tecla pulsada.
Pero el método getKey() hace algo más.
 Si la tecla pulsada permanece pulsada, ignora este hecho, de forma que se
evitan repeticiones.
Ing. Juan J. Suárez Y.
TECNOLOGÍAS EMERGENTES
Librería Keypad: Más Métodos
Método waitForKey()
 No recibe ningún argumento. Actúa de un modo muy similar a getKey(),
devolviendo el carácter de la tecla pulsada.
 La diferencia es que bloquea la ejecución del sketch Arduino hasta que se
pulse una tecla. Esto quiere decir que no se cambiará el estado de ningún
LED, ni se llevará a cabo ninguna operación aritmética, ni ocurrirá NADA
hasta que se pulse una tecla. La excepción a esto son aquellas operaciones de
Arduino que provocan interrupciones, tema del que hablaremos más adelante.

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad: Más Métodos
Método getState()
No recibe ningún argumento y devuelve una constante que nos indica el estado
del teclado. Hay cuatro posibilidades:
 IDLE. El teclado está en reposo.
 PRESSED. Se acaba de detectar la pulsación de una tecla.
 RELEASED. Se acaba de detectar la liberación de una tecla pulsada.
 HOLD. Se está manteniendo pulsada una tecla.

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad: Más Métodos
Método keyStateChanged()
 No recibe argumentos. Devuelve un valor booleano que será true si se ha
producido algún cambio en el estado del teclado, o false, en caso contrario.

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad: Más Métodos
Método setHoldTime(int)
 Se emplea para establecer el número de milisegundos necesarios para que se
detecte una pulsación en el teclado.
Si, por ejemplo, usamos la instrucción ObjetoTeclado.setHoldTime(50); el
sketch ignorará una pulsación si esta dura menos de 50 milisegundos. Resulta
muy útil para ignorar esas pulsaciones “rápidas” que se producen por error
cuando desplazamos el dedo sobre un teclado con teclas muy sensibles.

Ing. Juan J. Suárez Y.


TECNOLOGÍAS EMERGENTES
Librería Keypad: Más Métodos
Método setDebounceTime(int)
 Establece un periodo en milisegundos durante el cual se ignoran pulsaciones
consecutivas.
Por ejemplo, si usamos la instrucción ObjetoTeclado.setDebounceTime(50);
estaremos indicándole al sketch que, tras soltar una tecla, se debe bloquear el
proceso durante 50 milisegundos, antes de poder detectar otra pulsación.

Ing. Juan J. Suárez Y.