S06.s1 Lectura de Datos

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

Leer datos desde el teclado

y botón pulsador
Magister Víctor Andrade Soto
Logro

Al finalizar la sesión el alumno conseguirá ingresar


datos desde el monitor serial a través del teclado
empleando tinkercad
Ejemplo 1: Leer 1 caracter
Ejemplo 2: Sesgar los caracteres leídos
Ejemplo 3: Leer cadenas
Ejemplo 4: Convertir a entero
Ejemplo 5: tomar un valor fraccional
Ejemplo 6: Tomar más de 1 dato
Botón pulsador
¿Cómo conectar un botón a arduino?
Para conectar un botón al arduino conviene tener en mente ciertos puntos:

Un botón puede conectarse a cualquier pin de arduino (digital o analógico,


ya que los analógicos usualmente funcionan también como digitales).
Existen dos configuraciones posibles: con resistencia pull-up o resistencia
pull-down.
Configuraremos el pin seleccionado como entrada digital.
Debemos tomar en cuenta los rebotes y el ruido eléctrico en el software.
Es necesario utilizar una resistencia pull-up o pull-down, ya sea interna o
externa.
Las dos formas que existen para conectar un botón al arduino se visualizan
en los siguientes diagramas:
El valor de las resistencias en este caso no es crítico, pero debemos
considerar que valores menores causarán que circule una corriente
mayor cuando se oprime el botón, mientras que los valores mayores
pueden permitir que el ruido se introduzca al pin de entrada.

Los valores típicos para resistencia pull-up o pull-down son de 1 a 10


KOhms.
¿Para que sirve una resistencia pull-up o
pull-down?
La función primordial de las resistencias en el circuito del botón es mantener
un estado lógico conocido cuando el botón no está siendo accionado.

Esto es necesario ya que las entradas del microcontrolador, si se dejan al


aire, no poseen un estado determinado y pueden ir a cualquiera de dos
estados posibles de forma aleatoria. Según la necesidad, se pueden colocar
las resistencias en pines de entrada, obteniendo los siguientes efectos:

La resistencia pull-up mantiene un estado alto en el pin mientras el pulsador


no es accionado, el estado activo del botón es BAJO (cuando se presiona).
La resistencia pull-down mantiene un estado bajo mientras el pulsador no es
accionado, el estado activo del botón es ALTO (cuando se presiona).
• El microcontrolador AVR incluido en el arduino UNO, posee en cada
pin de entrada una resistencia pull-up que se puede activar bajo
control de nuestro programa, evitándonos tener que colocar de forma
externa este componente. Sin embargo, no todos los
microcontroladores poseen esta característica y por esta razón es
común encontrar este componente colocado de forma externa en la
mayoría de los circuitos.
Pulsador: Diseño 1
Pulsador: Diseño 2
Discusión
• Ejecute los dos diseños e indique las diferencias significativas en
diseño y codificación. Formaremos grupos de 5 alumnos.
Uso del Teclado Matricial
Logro
Al finalizar la sesión el alumno podrá ingresar datos
empleando un KeyPad matricial de 4*4 a través del
simulador Tinkercad
Utilidad
Los teclados matriciales son frecuentes en electrónica e informática. De
hecho, los teclados de ordenador normales son teclados matriciales,
siendo un buen ejemplo de teclado matricial con disposición no
rectangular.

Una de las desventajas de usar un teclado matricial es que pueden


causar problemas cuando se pulsa más de una tecla simultáneamente.
Este es uno de los motivos por el que los teclados de ordenador usan
una disposición no rectangular, agrupando ciertas teclas en circuitos
diferentes (Ctrl, Alt, Shift...)
Teclado 4x4
Los teclados se utilizan en todo tipo de dispositivos, incluidos
teléfonos celulares, máquinas de fax, microondas, hornos,
cerraduras de puertas, etc. Están prácticamente en todas
partes. Toneladas de dispositivos electrónicos los utilizan para
la entrada del usuario.

Por lo tanto, saber cómo conectar un teclado a un


microcontrolador como un Arduino es muy valioso para
construir muchos tipos diferentes de productos comerciales.
Al final, cuando todo está conectado correctamente y
programado, cuando se presiona una tecla, aparece en el
Monitor de serie de su computadora. Cada vez que presiona
una tecla, aparece en el Monitor de serie. Pero por ahora, por
razones de simplicidad, comenzamos simplemente mostrando
la tecla presionada en la computadora.
Para este proyecto, el tipo de teclado que utilizaremos es un
teclado matricial. Este es un teclado que sigue un esquema de
codificación que le permite tener mucho menos pines de
salida que las teclas. Por ejemplo, el teclado de matriz que
estamos usando tiene 16 teclas (0-9, AD, *, #), pero solo 8
pines de salida.
Con un teclado lineal, tendría que haber 17 pines de salida
(uno para cada tecla y un pin de tierra) para poder funcionar.
El esquema de codificación matricial permite menos pines de
salida y, por lo tanto, menos conexiones que deben hacerse
para que el teclado funcione. De esta manera, son más
eficientes que los teclados lineales, ya que tienen menos
cableado.
Comprender el teclado
Una de las cosas más misteriosas acerca de estos teclados es
que generalmente vienen sin documentación, por lo que el
usuario debe determinar la configuración del pin por sí
mismo. Sin embargo, nosotros lo hemos descubierto.
Con el teclado hacia arriba para que las teclas estén hacia
arriba y hacia usted, de izquierda a derecha, los primeros 4
pines son los pines de la fila y los últimos 4 pines son los pines
de la columna.
¿Cómo trabaja un teclado matricial 4×4 con
Arduino?
Estos teclados matriciales generalmente están conformados
por filas y columnas, para un teclado matricial de 4×4
tendremos 4 filas y 4 columnas interconectadas entre si y si
cada intersección representaría un pulsador tendríamos 16
pulsadores interconectados entre sí.
Para acceder a alguna de estas intersecciones tendremos que
identificarlos de alguna manera, por ejemplo si quisiéramos
identificar el pulsador conectado en la primera fila y en la
segunda columna esto lo podemos lograr poniendo la primera
fila a 1 lógico y la segunda fila a un 0 lógico al presionar el
pulsador enviara 1 lógico de la fila hacia la columna esto nos
daría la certeza para saber que pulsador fue presionado, y
gracias a esto nos permite detectar cualquier tecla que se
haya pulsado en la matriz de pulsadores.
Librería para manejar teclados matriciales
en Arduino
Controlar teclados matriciales en Arduino son fáciles de implementar,
mas si se tiene conocimiento amplio sobre programación se la puede
manejar sin la necesidad de ninguna librería realizando nuestras
propias funciones para controlar estos teclados matriciales, en caso
que no se tenga estos conocimientos sobre programación ya existe
múltiples librerías que nos ayudara a utilizar estos teclados matriciales
con Arduino.
Una de las más usadas es la librería “keypad.h” que la podemos instalar
directamente desde el IDE de Arduino, accediendo desde el menú a
Herramientas >> Administrar Bibliotecas >> [Buscar keypad]
Uso de la librería <keypad.h>
Esta librería ya tiene varias funciones programadas, pero antes
de usarla debemos incluirla a nuestro código escribiendo la
siguiente instrucción #include <keypad.h> en la cabecera,
además se debe incluir de una serie de instrucciones que se
detallan a continuación:
#include <keypad.h>
Configuramos la cantidad de filas y
columnas
Debemos definir el numero de filas y columnas que tiene el teclado
que vayamos a usar, en este caso es un teclado matricial de 4×4,
ademas se debe asignar un valor para cada tecla del teclado en una
matriz NxM.
const byte filas = 4;
const byte columnas = 4;
char teclas [filas][columnas]={{'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},
{'*','0','#','D'}
};
Configuramos los pines de las filas y
columnas que vamos a usar
Debemos designar los pines que vamos a usar para conectar
las filas y columnas de nuestro teclado matricial, en este caso
es un teclado matricial de 4×4.
byte pinesFilas[filas] = { 13, 12, 11, 10 };
byte pinesColumnas[columnas] = { 9, 8, 7, 6 };
Constructor
Una vez realizada todos los pasos anteriores recién podremos
asignar los parámetros necesarios del constructor que son:
Teclas del teclado matricial,
Filas,
Columnas,
la cantidad de filas y la cantidad de columnas.
Keypad teclado = Keypad( makeKeymap(teclas), pinesFilas,
pinesColumnas, filas, columnas );
Funciones de la librería <Keypad.h> para
manejar teclados matriciales en Arduino
Saber usar estas funciones es muy importante para sacar el
máximo potencial a esta librería, a continuación se hace una
descripción de estas funciones.
begin (makeKeymap (userKeymap))
Útil cuando necesitamos asignar varios valores a una misma tecla

char alphaKeys[FILAS][COLUMNAS] = {{ 'a','d','g' },{ 'j','m','p' }, { 's','v','y' },


{ ' ','.','#' } };
char numberKeys[FILAS][COLUMNAS] = {{ '1','2','3' },{ '4','5','6' }, { '7','8','9' },
{ ' ','0','#' }};
letras.begin( makeKeymap(alphaKeys) );
numeros.begin( makeKeymap(numberKeys) );
waitForKey ()
Con esta función podemos bloquear todo hasta que se presione una tecla,
sin que las interrupciones quedes anuladas en caso que lo estemos
usando.

getKey()
Esta función es la más usada, nos devuelve el valor guardado dentro una
matriz NxM que representa a la tecla presionada.

getState()
Nos permite saber el estado de las teclas, tienen cuatros estados IDLE
(inactivo), PRESSED (presionado), RELEASED (liberado) y HOLD (retenido).
keyStateChanged()
Útil cuando deseamos determinar algún cambio de estado de
una tecla.

setHoldTime(tiempo)
Esta función tiene un parámetro tiempo que se debe
establecer en milisegundos con un número entero y sin signo,
esta función puede determinar el tiempo que debe estar
presionado una tecla para que pase al estado HOLD.
setDebounceTime (tiempo)
Con esta función podemos controlar el tiempo de espera para poder
realizar una nueva pulsación de otra tecla de nuestro teclado matricial
en Arduino, el tiempo se declara en milisegundos.

addEventListener (keypadEvent)
Útil para trabajar con eventos, esta función se la debe declarar dentro
la función setup()
Ejemplo Básico
Días de la semana
Password con LED RGB
Tarea de la Semana 6
Ingrese 3 números por teclado. Los dos primeros son operandos y el
tercero la operación (es decir 1=suma, 2=resta,3=multiplicación,
4=división; si el tercer número es mayor que 4 debe abortar la
operación).
Los resultados de la operación deben mostrarse en el Monitor Serial y
debe encender 1 de 4 LEDs que se encuentran en la placa de pruebas.

También podría gustarte