#include <Keypad.h> // Incluye la librería Keypad.h
const byte ROWS = 4; // La variable constante 'ROWS' tiene el valor de 4 que son las filas
const byte COLS = 3; // La variable constante 'COLS' tiene el valor de 3 que son las columnas
char keys[ROWS][COLS] = { // Crea la matriz con los caracteres del teclado
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte colPins[COLS] = { 5, 4, 3 }; // Indica los pines conectados a las filas
byte rowPins[ROWS] = { 9, 8, 7, 6 }; // Indica los pines conectados a las columnas
// Se crea un objeto de la librería para utilizarse posteriormente sus funciones
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
byte leds[4] = {10, 11, 12, 13}; // Indica los pines conectados a los 4 LEDs
void setup() {
Serial.begin(9600); // Inicia la comunicación con el monitor Serie a 9600 bps
pinMode(leds[4], OUTPUT); // Configura los pines de los LEDs como salida
}
void loop() {
char key = keypad.getKey(); // La variable 'key' guarda la tecla pulsada
if (key != NO_KEY) { // Si presionamos una tecla...
int num = key - '0'; // Crea una variable que convierte el valor 'key' en un número entero
// Imprime por pantalla...
Serial.print("Dec: "); // El texto 'Dec: ' y el número presionado que es decimal
Serial.print(num);
Serial.print(" / Bin: "); // El texto ' / Bin: ' y el valor binario del número
Serial.println(num, BIN);
for (int i = 0; i < 4; i++) {
digitalWrite(leds[i], bitRead(num, i)); // Enciende o apaga los LEDs según el número binario
delay(100);
}
}
}