Configurar una libreria

Hola, otra vez yo, (el post anterior lo pude solucionar pero no me deja borrarlo) perdonen por hacer tantas preguntas pero es que estoy haciendo un proyecto que para mi es bastante dificil y bueno.

Mi duda ahora es, estoy "replicando" un proyecto ya echo que usa unas librerias que parecen creadas para ese proyecto, las adjunto.

el tema es que, las librerias son para un teclado, y dice por lo que veo que los teclados matriciales(que es para lo que supuestamente está configurado) tienen 12 patas cuando enrealidad tienen 7(el de 4x3), tendría que modificar eso para yo poder usar esa libreria sin cambiar muchas cosas del codigo, el tema es como hacerlo, si me pueden dar una mano se los agradeceria

Los archivos se llaman Teclado, y vienen con dos archivos: Teclado.h y Teclado.cpp
Les adjunto el codigo que hay dentro de cada uno y los respectivos archivos

Teclado.h :

#ifndef Teclado_h
#define Teclado_h

#include "Arduino.h"

#define NO_TECLA 0
#define DELAY_TECLA 500L

const char PINES[12] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '#'};

struct InfoTecla{
  unsigned long Millis;
  int Estado;
};

class Teclado {
  public:
    Teclado(byte Pines[12]); //0123456789*#
    char LeerTecla();
    char EsperarTecla();
  private:
    byte PinesAsignados[12]; 
    InfoTecla EstadoPines[12];
    char LeerEstadoTeclas();
    
};




#endif

Teclado.cpp

#include "Teclado.h"


Teclado::Teclado(byte Pines[12]){
  for(byte i = 0; i < 12; i++){
    PinesAsignados[i] = Pines[i];
    pinMode(Pines[i], INPUT_PULLUP);
  }
};

char Teclado::LeerTecla(){
  for (int i = 0; i < 12; i++)
    if (digitalRead(PinesAsignados[i]) == LOW)
      return PINES[i];
  return NO_TECLA;
};

char Teclado::EsperarTecla(){
  char Tecla1;
  char Tecla2;
  boolean Salir;
  do{
    Tecla1 = LeerTecla();
    delay(10);
    Tecla2 = LeerTecla();
    Salir = ((Tecla1 == Tecla2) && (Tecla1 != NO_TECLA));
  }while (!Salir);
   
  return Tecla1;
};

Por lo que observo a simple vista es como dije, declara como si el teclado ocupa 12 pines cuando solo ocupa 7 (en mi caso)

Se puede modificar?

Teclado.cpp (600 Bytes)

Teclado.h (516 Bytes)

Arduino keypad library y tendras tu librería de 4x4 o 4x3 configurable a tu gusto.

cuando te pongo asi es porque escribes eso en Google y obtienes el enlace a la librería.

surbyte:
Arduino keypad library y tendras tu librería de 4x4 o 4x3 configurable a tu gusto.

cuando te pongo asi es porque escribes eso en Google y obtienes el enlace a la librería.

sisi, se eso, lo que yo queria era configurar esa libreria porque sino tengo que cambiar varios codigos que ni idea como reemplazarlos, como por ejemplo:

    if (Tecla == '#'){
      CodigoIngresado = Entrada;
      (*VerificarDesactivacion)();
      Entrada = "";
   } else
       SonidoError();
  }if no key
  while ((keypad.LeerTecla() == Tecla) && !(millis() - mi >= 700));

el ultimo renglon no se que estaría haciendo ahí ese comando, no lo entiendo jajaj

La librería Keypad no requiere que cambies nada.

Le dices que pines usas para fila, que pines para columna, como configuras la matriz con letras números y listo

Te dejo un tutorial en inglés

acá un ejemplo para un teclado 4x3

/*  Keypadtest.pde
 *
 *  Demonstrate the simplest use of the  keypad library.
 *
 *  The first step is to connect your keypad to the
 *  Arduino  using the pin numbers listed below in
 *  rowPins[] and colPins[]. If you want to use different
 *  pins then  you  can  change  the  numbers below to
 *  match your setup.
 *
 */
#include <Keypad.h>

const byte ROWS = 4; // Four rows
const byte COLS = 3; // Three columns
// Define the Keymap
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'#','0','*'}
};
// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = { 9, 8, 7, 6 };
// Connect keypad COL0, COL1 and COL2 to these Arduino pins.
byte colPins[COLS] = { 12, 11, 10 }; 

// Create the Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

#define ledpin 13

void setup()
{
  pinMode(ledpin,OUTPUT);
  digitalWrite(ledpin, HIGH);
  Serial.begin(9600);
}

void loop()
{
  char key = kpd.getKey();
  if(key)  // Check for a valid key.
  {
    switch (key)
    {
      case '*':
        digitalWrite(ledpin, LOW);
        break;
      case '#':
        digitalWrite(ledpin, HIGH);
        break;
      default:
        Serial.println(key);
    }
  }
}

No puede ser más fácil!!!

Sisi! ya estuve usando esa libreria antes y es muy facil, lo que queria era modificar la libreria que pase yo porque sino tendria que cambiar muchas cosas del codigo y no se como reemplazarlas, y lo unico que tendría que cambiar es que la libreria de Teclado.h me reconozca las 7 patas del teclado y no 12 jaja

La librería que comentas tu usa un pin por cada tecla del keypad, o sea, es para teclados "fabricados" con pulsadores seguramente. Modificarla a filas y columnas te va a costar más que usar la que te dice surbyte y adaptar tu código a la nueva librería.