Hola Buenas tardes, esperando alguien me pueda ayudar tengo el siguiente problema estoy haciendo un programa en donde debo capturar 5 numeros al termino del ingreso de estos, el usuario presione A, para despues regresarlos al LCD como metodo de confirmacion al usuario para que verifique en pantalla los datos que ha ingresado esto seria el dato que corresponde a una Orden de Trabajo (WO) o Partida de trabajo y debo almacenarlo en una variable para despues mandarla llamar, si el dato capturado fuera erroneo presionar "C" para corregir y vuelva a recapturar el dato, investigando veo que los datos que se introducen con el Teclado Matricial son del tipo CHAR y deben ser convertidos a INTEGER para almacenarse en una variable y despues ser desplegados en el LCD soy nuevo en esto de la programacion en Arduino por si ven errores garrafales en mi codigo o algo que se pueda mejorar la ayuda es bienvenida, anexo mi codigo y mil gracias de antemano.
#include <string.h>
#include <Keypad.h>
#include<LiquidCrystal.h>
LiquidCrystal lcd(31,33,35,37,39,41);
const byte FILAS=4; //cuatro filas
const byte COLS=4; //cuatro columnas
char keys[FILAS][COLS]={ //definimos el keymap
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
//conectar los pines FILA0,FILA1,FILA2,FILA3 a estos pins de arduino MEGA
byte rowPins[FILAS]={42,44,46,48};
//conectar los pines COL0, COL1, COL2, COL3 a estos pins de arduino
byte colPins[COLS]={43,45,47,49};
//crear el keypad
Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins, FILAS, COLS);
void setup() {
//inicia serial
{ Serial.begin(9600);}
//Limpia el LCD para indicar que inicie el programa
lcd.clear();
delay (1000);
lcd.print("# PARA INICIAR");
delay (1000);
void loop() { // Loop principal
char key = keypad.getKey();
char fr[]="fr=";
char str[]="str=";
int a = str[3]-48;
int b = str[4]-48;
int c = str[5]-48;
int d = str[6]-48;
int abcd = 0;
if (key != 0)
lcd.print(key);
switch (key)
{
case '#': //Inicia el programa presionando #
lcd.begin(16,2);
delay (1000);
lcd.print("INGRESE PARTIDA:"); //Mensaje linea 1 del LDC
delay (1000);
lcd.setCursor(0,1);
lcd.print("ESPERE.....");//Mensaje linea 2 del LCD
delay (1000);
lcd.blink(); //Inicia el Blink en LCD
delay (1000);
//while (!keypad.getKey()); // Wait for characters
if (str[0] == fr[0] & str[1] == fr[1] & str[2]==fr[2])
{
Serial.print("Value send: ");
Serial.print(key);
if (a==-48 & b==-48 & c==-48 & d==-48)
{
abcd = 0;
}
}
else if (a>=0 & b>=0 & c>=0 & d>=0)
{
abcd = a*1000 + b*100 + c*10 + d;
}
else if (d==-48 & a>=0 & b>=0 & c>=0)
{
abcd = a*100 + b*10 + c;
}
else if (d==-48 & c==-48 & a>=0 & b>=0 )
{
abcd = a*10 + b;
}
else if (d==-48 & c==-48 & b==-48 & a>=0)
{
abcd = a;
}
else
{
abcd = 0;
}
Serial.println(abcd);
break;
}
switch (key)
{
case 'C': //En caso de error de Captura Borra LCD.
lcd.clear();
Serial.println(key);
delay (1000);
lcd.blink(); //Inicia el Blink en LCD
delay (1000);
break;
}
switch (key)
{
case 'A': //al presionar A guarda la variable PARTIDA y la confirma en Pantalla
Serial.println(key);
lcd.begin(16,2);
lcd.print("CAPTURO PARTIDA:");
lcd.setCursor(0,1);
break;
}
} //Fin del loop principal