

Vamos a utilizar un elemento de entrada muy interesante, un teclado matricial de 4 x 3.
Un teclado matricial cuenta con filas y columnas, cuando se presiona un botón, se activa la salida correspondiente a la fila y la columna en la que se encuentra dicho botón, leyendo estos datos podemos saber cual a sido el presionado.

Este funcionamiento es el mismo que en los mapas, o en el juego de hundir la flota, si tienes una coordenadas con la fila y la columna estas definiendo un punto único.
Conectaremos el matriz a Arduino de la siguiente forma:
Lo que haremos será leer las entradas digitales de Arduino para saber cuales están a 1 y cuales a 0, en el momento en que tengamos dos 1 podremos averiguar que botón esta siendo pulsado.
Para ello utilizaremos la librería keypad (puedes descargarla aquí), que nos simplificará la lectura de las entradas. Pero para que funcione deberemos crear una matriz con la distribución de las teclas (de ahí el nombre de teclados matriciales, porque se pueden representar cómo una matriz.), a parte de esto, la librería también necesita saber el numero de filas (rows) y columnas (cols) de nuestro teclado y los pines a los que corresponde cada uno de ellos. Veamos todo ello en el código, que nos permitirá leer por serial lo botones que pulsamos.
//añadimos la librería keypad #include <Keypad.h> //creamos una constante para definir que nuestro teclado tiene 4 filas const byte ROWS = 4; //creamos una constante para definir que nuestro teclado tiene 3 columnas const byte COLS = 3; //creamos una matriz con los caracteres del teclado char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; //indicamos a que pines de Arduino estan conectadas las filas del teclado byte rowPins[ROWS] = {5, 4, 3, 2}; //indicamos a que pines de Arduino estan conectadas las columnas byte colPins[COLS] = {8, 7, 6}; //creamos un objeto de la libreria keypad para usar sus funciones Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup(){ //iniciamos la conexión por serial, a 9600 baudios Serial.begin(9600); } void loop(){ //cuando se pulse una tecla, se guardará en una variable llamada key char key = keypad.getKey(); //Si se ha pulsado una tecla, se envia por serial if (key != NO_KEY){ Serial.println(key); } }
Este es un ejemplo muy simple, pero podemos usar este teclado para infinidad de cosas, cómo crear una calculadora, un sistema de seguridad por combinación, seleccionar el programa que queremos que nuestro robot ejecute de forma sencilla... etc.