Vous êtes sur la page 1sur 18

Sesion 03: Manejo

de Teclado 4x4

Carlos Vila

Semestre 2017 - I
Pulsadores
Teclados 4 x 4
Comunicacin Serial

Prof. Carlos Vila | Semestre 2017 - I


Programacin Digital

Prof. Carlos Vila | Semestre 2017 - I


Prof. Carlos Vila | Semestre 2017 - I
Este teclado matricial es un excelente
dispositivo de entrada cuando se trabaja
con PICs o Arduino.

La forma tradicional de conectarlos es


utilizando 7 pines, 3 de columnas y 4 de
filas.

El nombre de este tipo de teclado proviene de su interconexin entre


las columnas y las filas, ya que esta conexin tiene la forma de una
matriz. Existen teclados matriciales de 4 x 4 y de 4 x 3 teclas.

Prof. Carlos Vila | Semestre 2017 - I


Prof. Carlos Vila | Semestre 2017 - I
Programacin Digital

Prof. Carlos Vila | Semestre 2017 - I


Llibreria que permite el uso de teclado matricial. La versin 3.0 no
soporta la presin de multiples teclas simultaneamente.
No se necesitan resistencias externas o diodos, pues la libreria usa
resistencias internas pullup y adicionalmente se asegura que todos lo
pines de las columnas no utilizadas sean de alta impedancia.

Prof. Carlos Vila | Semestre 2017 - I


Descargar la librera de la ruta:
http://playground.arduino.cc/uploads/Code/keypad.zip
Ponga la librera Keypad en el folder: "arduino\libraries\".
En el IDE de Arduino, seleccionar el men "Sketch / Import Library /
Keypad".
Una vez la librara ha sido importada, agragar en el cdigo la
siguiente sentencia "#include <Keypad.h>" para referenciar la
librera inportada.

Prof. Carlos Vila | Semestre 2017 - I


Programacin Digital

Prof. Carlos Vila | Semestre 2017 - I


Al instanciar el objeto Keypad, este usa los pines 5, 4, 3, 2 como filas, y
los pines 8, 7, 6 como columnas. Este teclado se configurar para tener
tener 4 filas y 3 columnas, dado como resultado 12 teclas.

const byte rows = 4; //Cuatro filas


const byte cols = 3; //Tres columnas
char keys[rows][cols] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'#','0','*'}
};
byte rowPins[rows] = {5, 4, 3, 2};
//Conecta a las filas pinouts del teclado
byte colPins[cols] = {8, 7, 6};
//Conecta a las columnas pinouts del teclado
Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins,rows,cols);

Prof. Carlos Vila | Semestre 2017 - I


void begin(makeKeymap(userKeymap))
Inicializar el keymap interno, que debe ser igual a userKeymap [Ver: File ->
Examples -> Keypad -> Examples -> CustomKeypad]
char waitForKey()
Esta funcin espera hasta que se presione una tecla. Advertencia: Esta
funcin bloquea el resto de codigos hasta que una tecla sea presionada,
quiere decir no blinking LED's, no LCD screen updates, no excepciones o
rutinas de interrupcin.
char getKey()
Retorna cualquiera de las teclas presionadas. Esta funcin no bloquea.
KeyState getState()
Retorna el estado actual de cualquiera de las teclas.
Los cuatro estados son: IDLE, PRESSED, RELEASED y HOLD.
Prof. Carlos Vila | Semestre 2017 - I
boolean keyStateChanged()
La versin nueva 2.0: Permite conocer cuando una tecla a cambiado de un
estado a otro. Ejemplo: apesar que se esta probando una tecla valida, se
puede tambien probar cuando una tecla esta presionada.
setHoldTime(unsigned int time)
Setea el nmero de milisegundos que tiene el usuario parar hold un botn
hasta que el estado HOLD sea disparado.
setDebounceTime(unsigned int time)
Set the amount of milliseconds the keypad will wait until it accepts a new
keypress/keyEvent. This is the "time delay" debounce method.
addEventListener(keypadEvent)
Trigger an event if the keypad is used. You can load an example in the
Arduino IDE. [See File -> Examples -> Keypad -> Examples ->
EventSerialKeypad].
Prof. Carlos Vila | Semestre 2017 - I
Programacin Digital

Prof. Carlos Vila | Semestre 2017 - I


#include <Keypad.h>

const byte ROWS = 4; //four rows


const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'#','0','*'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the keypad

Prof. Carlos Vila | Semestre 2017 - I


Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
Serial.begin(9600);
}

void loop(){
char key = keypad.getKey();

if (key != NO_KEY){
Serial.println(key);
}
}

Prof. Carlos Vila | Semestre 2017 - I


Programacin Digital

Prof. Carlos Vila | Semestre 2017 - I


Ejercicio 1: Realizar el ingreso de dos nmeros y visualizar por el
monitor serial los nmero ingresados y la suma de los mismos, para
ello usar como teclas auxiliares las siguientes:
X : Smbolo de suma
# : Smbolo de <ENTER> o cambio de lnea o fin de sentencia.

Prof. Carlos Vila | Semestre 2017 - I

Vous aimerez peut-être aussi