Como convertir datos del tipo CHAR a INT para visualizarse en LCD.
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 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 recapturar el dato, investigando veo que los datos que se introducen con el teclado matricial son del tipo char y deben ser convertidos 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.
code: [select]
#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 estos pins de arduino mega
byte rowpins[filas]={42,44,46,48};
//conectar los pines col0, col1, col2, col3 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 = 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 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 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
no revisado en profundidad tu código, pero hacer una conversión ("casting") de los "tipos primitivos" es muy sencillo. por ejemplo:
es obvio que te va imprimir un caracter si la variable key es de tipo char. para imprimir su valor número, se realiza la conversión "al momento".
el formato es el siguiente: (tipo_de_dato_a_convertir)nombre_de_la_variable
algo que quizá no sabías, es que es válido almacenar un caracter el cualquier tipo de variable; excepto en los de "tipo objeto". almacenar un caracter en un float/double no sé si será posible.
pd: edita el primer post, porque el código debe ir entre etiquetas generadas por </>
code: [select]
serial.print(key);
es obvio que te va imprimir un caracter si la variable key es de tipo char. para imprimir su valor número, se realiza la conversión "al momento".
code: [select]
serial.print((int)key);
el formato es el siguiente: (tipo_de_dato_a_convertir)nombre_de_la_variable
algo que quizá no sabías, es que es válido almacenar un caracter el cualquier tipo de variable; excepto en los de "tipo objeto". almacenar un caracter en un float/double no sé si será posible.
pd: edita el primer post, porque el código debe ir entre etiquetas generadas por </>
Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > Como convertir datos del tipo CHAR a INT para visualizarse en LCD.
arduino
Comments
Post a Comment