Buenas noches ante todo, me considero aprendiz en el mundo de Arduino, actualmente tengo un problema en que necesito almacenar 2 dígitos ingresados por un teclado 4x3, logro hacer ingresar los dígitos pero no en conjunto, es decir si ingreso 20, me reconoce como si fuera ingresado 2 y 0, como podría hacer para al pulsar 2 teclas ejemplo (2,0) me aparezca en pantalla 20 y este dato se almacene para un posterior proceso? les agradezco de ante mano la ayuda, he buscado mucho en la web y nada me ha funcionado, adjunto el código para que puedan ayudarme.
El fin de la programación es crear un menú con sub menús, donde se debe introducir un numero de pastillas para iniciar el proceso (este numero lo necesito para contar cuantas pastillas deben caer en el envase, por ello lo quiero utilizar en un futuro)
Al presionar # se considera como OK y debe proceder al siguiente menú (luego de haber introducido la cantidad de pastillas deseadas)
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
char pulsacion;
int contador = 1;
const byte FILAS = 4;
const byte COLUMNAS = 3;
int valor;
int auxtecla;
char teclas [FILAS] [COLUMNAS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'},
};
const byte pinesFILAS [FILAS] = {2, 3, 4, 5};
const byte pinesCOLUMNAS [COLUMNAS] = {8, 9, 10};
Keypad teclado = Keypad(makeKeymap(teclas), pinesFILAS, pinesCOLUMNAS, FILAS, COLUMNAS);
LiquidCrystal_I2C lcd (0x27,16,2);
void setup() {
lcd.init();
lcd.backlight();
bienvenida();
}
void loop() {
pulsacion = teclado.getKey();
if (pulsacion != 0){
lcd.clear();
delay(100);
}
if(contador == 1){ menu_1();accion_1();}
if(contador == 2){ menu_2();accion_2();}
if(contador == 3){ menu_3();accion_3();}
}
void bienvenida(){
lcd.clear();
lcd.setCursor(3,0);
lcd.print("BIENVENIDO ");
delay(3000);
lcd.clear();
}
void menu_1(){
lcd.setCursor(0,0);
lcd.print("Indicar tipo de");
lcd.setCursor(4,1);
lcd.print("Pastillas ");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("*:Pastilla T1");
lcd.setCursor(0,1);
lcd.print("#:Pastilla T2");
pulsacion = teclado.waitForKey();
}
void accion_1(){
if(pulsacion == '*' || pulsacion == '#') contador=2;
if(pulsacion != '*' && pulsacion != '#'){
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Opcion NO");
lcd.setCursor(4,1);
lcd.print("VALIDA");
delay(1000);
}
}
void menu_2() {
valor = 0;
auxtecla = 0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Cantidad:");
//pulsacion = teclado.waitForKey();
lcd.setCursor(10,0);
while(auxtecla != '#')
{
auxtecla = teclado.getKey();
if(auxtecla != NO_KEY){
if((auxtecla >= '0') && (auxtecla <= '9')){
valor = auxtecla - 48;
lcd.print(valor);
}
}
}
}
void accion_2(){
if(valor >= 0 && valor <= 5)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Su pedido estara");
lcd.setCursor(0,1);
lcd.print("Listo en breve");
delay(3000);
contador = 3;
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Ingrese un num");
lcd.setCursor(0,1);
lcd.print("entre 0-20");
delay(1500);
}
}
void menu_3(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Desea otro");
lcd.setCursor(0,1);
lcd.print("Pedido? *S #N");
pulsacion = teclado.waitForKey();
}
void accion_3(){
if(pulsacion == '*') contador=2;
if(pulsacion == '#')
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Fin del Proceso");
contador = 0;
}
if(pulsacion != '*' && pulsacion != '#'){
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Opcion NO");
lcd.setCursor(4,1);
lcd.print("VALIDA");
delay(1000);
}
}