Buenas noches.
el programa que estoy haciendo a breves rasgos :
lectura de un sensor
lectura de un valor ingresado desde un teclado (set point)
ejecutar una acción de control
comparación de ambos valores
ejecutar una acción de control
pero el programa se queda "atrapado" en la función del teclado (el sensor no vuelve a leer)
al menos cuando no se presiona ninguna tecla, al presionar una tecla
el loop continua, pero deseo que tambien continue cuando no se presiona ninguna tecla
(ya probe con lo del millis y no me funcionó)
void tecladomatricial()
{
while(on) //lo siguiente sucede mientras "on" sea verdadero
//on es declarado verdadero al principio de cada loop
{
char modo=tecla.getKey(); //se toma una variable char llamada modo
if(modo){ //solo tomar en cuenta si la variable modo se encuntra activa
switch(modo)
{
case'A':
alfa(); //funcion para ingresar valores con el teclado, alfa() se detalla más abajo
set=q;
on = false;
break;
case'B':
beta(); //funcion para mostrar valores
on = false;
break;
case'C':
gamma(); //funcion para mostrar otros valroes
on = false;
break;
case'D':
menu(); //funcion que muestra un menu
on = false;
break;
case'*':
lcd.clear(); //funcion para no mostrar nada en display (es relleno)
on = false;
break;
}
}
}
}
void alfa() //opcion que permite ingresar un valor de voltaje rms
{
q=0; // variable momentanea
int set=0; //se declara variable set (set point)
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("int val & prez #"); // el display dice: introduce valor y presiona #(un enter)
lcd.setCursor(0,1);
bool on2=true; //sea on2 verdad
while(on2) //mientras on2 sea verdad se cumple lo siguiente
{
char num=tecla.getKey(); //se toma una variable tipo caracter
switch(num)
{
case('1'):
case('2'):
case('3'):
case('4'):
case('5'):
case('6'):
case('7'):
case('8'):
case('9'):
case('0'):
lcd.print(num);
q = q * 10 + num- '0'; //al presionar del 0-9 el numero digitado se escribe en la
//variable q, al volver a presionar la "q" previa se multiplica por
//10 y se suma el nuevo dijito....de esta manera se ingresan los valores
break;
case('#'):
return ; //al presionar #, se vuelve a la funcion tecladomatricial(); y se abandona
//la funcion alfa();
}
}
}