A continuación os dejamos con la formación dedicada a programar un teclado matricial en el IDE de Arduino. (Segunda parte del post que podéis encontrar en nuestro blog: Cómo funciona un teclado matricial con Arduino).
En el primer post vimos cómo funciona un teclado matricial así como su diagrama de conexión. Para entender cómo vamos a programarlo simplemente recordar que entendíamos dicho teclado como una matriz donde al detectar la pulsación en la columna X y la fila Y sabíamos que se había pulsado la tecla (X , Y).
Existe la posibilidad de realizar la programación sin librería, pero nosotros vamos a hacerlo utilizando la libería keypad, ya que esto nos simplifica mucho el código y es lo más habitual.
Para hacerlo práctico, vamos a trabajar en base al siguiente ejemplo:
Cómo intercambiar la posición de un servo SG90 al introducir un “password” en el teclado matricial.
Esto lo podríamos utilizar en un proyecto como cerrojo con código de una caja fuerte, donde el servo SG90 nos haría el papel de cerradura al moverse alternativamente entre dos posiciones, abierto-cerrado.
Lo primero: Instalar las librerías.
¿Cómo las instalamos? Vamos a
Herramientas > Administar bibliotecas
Aparecerá el gestor de Librerías.
Escribimos en la búsqueda “Keypad” y luego “Servo”. Las buscamos y las instalamos.
Y ahora sí, vamos a estudiar el código:
Programar un teclado matricial (Programa IDE Arduino):
Las explicaciones de cada línea de código estan tras la doble barra / / (esto hace transparente al IDE estas aclaraciones, por tanto puedes copiar y pegar así el código 😉
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
/*InputMakers Proyecto de la caja fuerte: controlaremos la apertura y cierre de la caja fuerte con el teclado matricial, introduciendo el password: 1 A. El servo SG90 hará la función de cerradura al variar su posición. */ #include <Keypad.h> // Incluimos la librería Keypad. #include <Servo.h> // Incluimos la librería Servo. const byte FILAS = 4; // Número de filas del keypad. const byte COLUMNAS = 4; // Número de columnas del keypad. /* Mediante un array de 2 dimensiones definimos los símbolos que corresponden a cada posición de las teclas. */ char teclado[FILAS][COLUMNAS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte pinFilas[FILAS] = {9, 8, 7, 6}; // Array de una dimensión para definir los pines en los que estan conectadas las filas. byte pinColumnas[COLUMNAS] = {5, 4, 3, 2}; // Array de una dimensión para definir los pines en los que estan conectadas las columnas. /* A continuación creamos una instancia de tipo Keypad que llamamos keypad1 y le asignamos las teclas del array teclado. Le indicamos que hemos conectado las FILAS del keypad a los números de los pines que hemos indicado en el array pinFilas y las COLUMNAS del keypad a los números de los pines que hemos indicado en el array pin Columnas. */ Keypad keypad1 = Keypad( makeKeymap(teclado), pinFilas, pinColumnas, FILAS, COLUMNAS ); // Creamos el servomotor con el nombre servo1. Servo servo1; // Variable para guardar la posición del servo. int posicion = 0; void setup() { // Asignamos el pin 10 al servomotor. servo1.attach(10); // Posicionamos el servo al conectar la placa a su posición 0 (puerta cerrada). servo1.write(0); } void loop() { // Leemos la tecla pulsada de keypad. char key = keypad1.getKey(); if (key == '1'){ // Si pulsamos la tecla '1', buscamos la confirmación A. do{ key = keypad1.getKey(); } while(key != 'A'); // Si la posición es 0 (puerta cerrada) entonces abrimos la puerta. if(posicion == 0){ servo1.write(65); posicion = 65; } // Si la posición es 65 (puerta abierta) entonces cerramos la puerta. else if(posicion == 65){ servo1.write(0); posicion = 0; } delay(300); } } |
Podéis adquirir el proyecto CAJA FUERTE relacionado con este post, que te servirá para ampliar tus conocimientos sobre manejo del teclado matricial y el servo SG90, si te ha gustado este post NO TE LO PIERDAS!!
IMPORTANTE: OFRECEMOS GRANDES DESCUENTOS PARA CENTROS EDUCATIVOS! SI ERES UN CENTRO EDUCATIVO PIDE PRESUPUESTO PERSONALIZADO AQUÍ
[product_page id=”267″]
Esperamos que ahora sepas un poco más sobre programación! Si es así comparte por WhatsApp con algún amigo :))
Saludos del equipo de InputMakers y ¡sigue siempre aprendiendo!