Cuando pensamos en crear algo, una máquina o una aparato, una de las cosas que tenemos que tener en cuenta es cómo vamos a darle ordenes. Vamos a necesitar una interfaz que nos permita interactuar con la máquina.

Una de las más conocidas y usadas son los teclados. Estos con normalidad suelen estar organizados de forma matricial, lo que permite reducir el número de pines digitales que usamos para leer las teclas.

Para llevar a cabo la lectura del teclado vamos a usar la librería keypad.h con el siguiente código.

#include <Keypad.h>

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

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

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

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

 if (key){
  Serial.println(key);
 }
 delay(10);
}

En este vídeo vemos como controlar el teclado y explico el código que se usa.

Enrique Gómez

Ingeniero Electrónico Industrial y Automático, amante de la comunicación audiovisual y de la divulgación ingenieril y científica. Friki de Star Wars, cuenta más de lo que parece. Puedes saber más sobre mi y sobre mis trabajos en enrique.rinconingenieril.es
Suscribete
Notificame
guest
5 Comments
Nuevos
Antiguos Más votados
Inline Feedbacks
View all comments
Iván
Iván
3 meses hace tiempo

Hola! Muy buen aporte, quizás me podrías ayudar, estoy tratando de hacer algo similar, con el mismo teclado pero utilizando i2c, que es lo que debería modificar para que esto funcione de la misma manera con esa conexión?

yisus
yisus
4 meses hace tiempo

holaaaa! muy buen vídeo de verdad excelente amigo eres un genio!!!!!!!!!!! oyes me podrías apoyar por favor con un código para cerrar y abrir con pantalla lcd 16×2 i2c y servomotor sg90 te lo agradecería muchísimo

Luis Enrique
Luis Enrique
1 año hace tiempo

Hola, Buena noche. Disculpa me puedes ayudar estoy haciendo un programa para poder declarar el tiempo que estara abierta una determinada valvula y este se cierre al pasar un determinado tiempo y como acarrear valores de tiempo de 1 a 1000 segundos sin poner todos los 1000 delay.

De ante mano muchisimas gracias, saludos desde Mexico.