// Definir la matriz de datos
byte keys[4][4] = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 },
{ 13, 14, 15, 16 }
};
// Definir los pines para el display 7 segmentos
byte displayPins[7] = {15, 4, 18, 19, 21, 22, 23};
// Definir los pines para el teclado
byte filPins[4] = {13, 12, 14, 35};
byte colPins[4] = {34, 33, 26, 27};
unsigned long periodo = 50;
unsigned long conta = 0;
byte iFil = 0, iCol = 0;
byte numero = 0;
// Inicializacion
void setup()
{
Serial.begin(115200);
// Columnas en alta impedancia
for (byte c = 0; c < 4; c++)
{
pinMode(colPins[c], INPUT);
digitalWrite(colPins[c], HIGH);
}
// Filas en pullup
for (byte f = 0; f < 4; f++)
{
pinMode(filPins[f], INPUT_PULLUP);
}
// Inicializar los pines del display
for (byte i = 0; i < 7; i++)
{
pinMode(displayPins[i], OUTPUT);
}
}
void loop()
{
if (millis() - conta > periodo) // Espera no bloqueante
{
conta = millis();
if (leerTeclado()) // Detección de tecla pulsada
{
mostrarNumero(numero);
}
}
}