Almacenamiento en variables

Hola, soy casi nuevo en arduino y tengo un problema que me gustaría que me orientaran un poco.

Hace poco me puse a practicar un poco con mi arduino y un keypad 4x4, hice el clásico programa del teclado que viene de ejemplo en la librería y quise tratar de declarar una variable para que lo que presionara en el teclado se guardara en una variable y mediante una sentencia asumía que si la variable era igual a un numero que presionara se encienda un led.

Ejemplo:

#include <Keypad.h>

#define led 13

const byte filas = 4;
const byte columnas = 4;
byte pinsFilas[filas] = {22, 24, 26, 28 };
byte pinsColumnas[columnas] = {23, 25, 27, 29 };
char tecla;
char teclas[filas][columnas] = {

{‘1’,‘2’,‘3’,‘A’},
{‘4’,‘5’,‘6’,‘B’},
{‘7’,‘8’,‘9’,‘C’},
{’*’,‘0’,’#’,‘D’}

};

Keypad teclado = Keypad(makeKeymap (teclas), pinsFilas, pinsColumnas, filas, columnas);

void setup()
{
Serial.begin(9600);
pinMode(led, OUTPUT);
}

void loop()
{
tecla = teclado.getKey();

if( tecla != NO_KEY )
{
int numero = tecla - 48;
// ESTA ES LA PARTE QUE NO LOGRO QUE FUNCIONE.
//CUANDO PRESIONO EL 35 EN EL TECLADO NO SE GUARDA COMO UN ENTERO DE DOS DÍGITOS.
if(numero == 35)
{
digitalWrite(led, HIGH);
Serial.println(“CODIGO CORRECTO”);
}else{
digitalWrite(led, LOW);
Serial.println(“CODIGO INCORRECTO”);
}

}
}

Mi problema es que el numero de dos o mas dígitos que que asigno y presiono en el teclado no se guarda en la variable, solo lo puedo hacer si el numero es de un solo dígito.

Me podrían orientar en esta pequeña falla por favor.
Saludos

Hola, soy casi nuevo en arduino y tengo un problema que me gustaría que me orientaran un poco.

Hace poco me puse a practicar un poco con mi arduino y un keypad 4x4, hice el clásico programa del teclado que viene de ejemplo en la librería y quise tratar de declarar una variable para que lo que presionara en el teclado se guardara en una variable y mediante una sentencia asumía que si la variable era igual a un numero que presionara se encienda un led.

Hi, I’m almost new to arduino and I have a problem that I wish would guide me a little. I recently started to practice a bit with my arduino and 4x4 keypad, I made the classic keyboard program next sample in the library and wanted to try to declare a variable for it to press on the keyboard will be stored in a variable and assumed by a judgment if the variable was equal to a number to press a light to come on.

Ejemplo:

example:

 #include <Keypad.h>

#define led 13

const byte filas = 4;
const byte columnas = 4;
byte pinsFilas[filas] = {22, 24, 26, 28 };
byte pinsColumnas[columnas] = {23, 25, 27, 29 };
char tecla;
char teclas[filas][columnas] = {
  
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
  
};

Keypad teclado = Keypad(makeKeymap (teclas), pinsFilas, pinsColumnas, filas, columnas);


void setup()
{
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}

void loop()
{
  tecla = teclado.getKey();
  
  if( tecla != NO_KEY )
  {
    int numero = tecla - 48;
// ESTA ES LA PARTE QUE NO LOGRO QUE FUNCIONE.
//CUANDO PRESIONO EL 35 EN EL TECLADO NO SE GUARDA COMO UN ENTERO DE DOS DÍGITOS.
    if(numero == 35)
    {
    digitalWrite(led, HIGH);
    Serial.println("CODIGO CORRECTO");
    }else{
      digitalWrite(led, LOW);
      Serial.println("CODIGO INCORRECTO");
    }
  
  }  
}

Mi problema es que el numero de dos o mas dígitos que que asigno y presiono en el teclado no se guarda en la variable, solo lo puedo hacer si el numero es de un solo dígito. Me podrían orientar en esta pequeña falla por favor. Saludos

My problem is that the number of two or more digits that you assign and pressed on the keyboard is not stored in the variable, it can only do if the number is a single digit. Could guide me in this little flaw please. regards

GOOGLE TRANSLATE

My problem is that the number of two or more digits that you assign and pressed on the keyboard is not stored in the variable, it can only do if the number is a single digit. Could guide me in this little flaw please. regards

You get one digit at a time, in numero. It is up to you to increment, rather than overwrite, the value in that variable.

It is also more appropriate to post in English in this section of the forum.

Quote from PaulS

You get one digit at a time, in numero. It is up to you to increment, rather than overwrite, the value in that variable. It is also more appropriate to post in English in this section of the forum.

Usted recibe un dígito a la vez, en numero. Es hasta usted para incrementar, en lugar de sobrescribir el valor en esa variable. También es más apropiado para publicar en Inglés en esta sección del foro.

Lo que te respondieron antes es correcto.

Y se me ocurren dos maneras de implementarlo.

Una es tomar el tiempo de cuando se presiona una tecla, y si no se presiona nada mas en cierto tiempo ese es el valor de entrada, y si en cambio se presiona otra tecla se agrega. (algunos controles remotos de tv funcionan así para entrar los canales).

La otra manera, mas sencilla, es usar una tecla como "enter", o sea que los caracteres se agreguen hasta que se toque la letra "enter" y se de entrada.

No es difícil pero tampoco es básico.

Saludos.