Go Down

Topic: Bucle do While mediante keypad 4x4 (Read 196 times) previous topic - next topic

JOSEPH_31

Jun 05, 2018, 11:52 pm Last Edit: Jun 06, 2018, 12:55 am by surbyte
Hola a todos, antes que nada debo aclarar que soy realmente nuevo en el mundo de lo que es un conocimiento de la realidad. Mi problema es el siguiente: estoy tratando de ingresar varios dígitos desde un teclado matricial 4x4 para almacenarlos en EEPROM para usar una vez más para usarlo más adelante, es decir, hacer una especie de Setpoint para lo que cree una subrutina la cual hago el llamado en el circuito vacío (), hasta este punto no tengo problema, pero mi intención es crear varios Setpoint y es aquí el problema, ya que void loop () es un nodo que se repite un número infinito de veces no logro hacer una pausa que me permita completar el ingreso de datos en el primer setpoint. Lo que es interesante es hacer un bucle mientras que, al igual que un bucle, mientras que, pero esto es lo que resulta en vano, lo que lo maximo que el logro es que entre el ciclo y ahy se repita continuamente pero no logro hacer que salga el primer ciclo, ayuda sera agradecida. les dejo micodigo a continuacióncion:




Code: [Select]

#include <EEPROM.h>
#include <OnewireKeypad.h>
#define Fil 4
#define Col 4
#define Pin A4
#define Fil_Res 1000
#define Col_Res 220

int LecVolt, KEYS, nClicks, NDigitos, i, NDigitos2, f, NDigitos3, g, NDigitos4, NDigitos5, h, k, LG = 7, LR = 5, LW = 6;

char Tecla, Teclas, Digitos [4], myDigitos [4], Digitos2 [2], myDigitos2 [2], Digitos3 [6], myDigitos3 [6], Digitos4 [4], myDigitos4 [4], Digitos5 [4], myDigitos5 [4];

flotador S_LM35_1, S_LM35_2, S_LM35_3, Estaño, Hin, Tout, Hout, T_1, T_2, T_3, P, DH, Wi, Ts, Pa, HA, HS, Wp, DHR, Tsup, Tinf;

Cadena valor3, valor4, valor5, valor6;
OnewireKeypad <Print, 16> Keypad (Serial, KEYS, 4, 4, A4, 1000, 220);

Configuración de vacío ()
{
Serial.begin (9600);
}



void loop ()

{

Teclado ();

hacer{

       Setpoint1 ();

} while (Tecla! = '*');

hacer{

       Setpoint2 ();

} while (Tecla! = '#');

 }


void Teclado ()
{
 
 LecVolt = analogRead (A4);

 if (LecVolt> = 835 && LecVolt <= 845) {Tecla = '1';}
 if (LecVolt> = 772 && LecVolt <= 785) {Tecla = '3';}
 if (LecVolt> = 803 && LecVolt <= 815) {Tecla = '2';}
 if (LecVolt> = 747 && LecVolt <= 760) {Tecla = 'A';}
 if (LecVolt> = 710 && LecVolt <= 720) {Tecla = '4';}
 if (LecVolt> = 687 && LecVolt <= 700) {Tecla = '5';}
 if (LecVolt> = 665 && LecVolt <= 675) {Tecla = '6';}
 if (LecVolt> = 644 && LecVolt <= 655) {Tecla = 'B';}
 if (LecVolt> = 620 && LecVolt <= 630) {Tecla = '7';}
 if (LecVolt> = 601 && LecVolt <= 612) {Tecla = '8';}
 if (LecVolt> = 585 && LecVolt <= 597) {Tecla = '9';}
 if (LecVolt> = 570 && LecVolt <= 580) {Tecla = 'C';}
 if (LecVolt> = 547 && LecVolt <= 560) {Tecla = '*';}
 if (LecVolt> = 534 && LecVolt <= 544) {Tecla = '0';}
 if (LecVolt> = 521 && LecVolt <= 530) {Tecla = '#';}
 if (LecVolt> = 490 && LecVolt <= 518) {Tecla = 'D';}
}

void Setpoint1 ()
{
 Serial.println ("Ingrese un valor de Humedad a Retirar");
 Serial.println ("DH (%):");

 if ((Keypad.Key_State () == 3))
 {
   if (Tecla! = NO_KEY && (Tecla == '0' || Tecla == '1' || Tecla == '2' || Tecla == '3' || Tecla == '4' || Tecla = = '5' || Tecla == '6' || Tecla == '7' || Tecla == '8' || Tecla == '9'))
   {
     valor3 = valor3 + Tecla;
     Serial.print (Tecla);
     retraso (1000);
   }
   si if (Tecla! = NO_KEY && Tecla == 'A')
   {
     valor3.toCharArray (Digitos2,2);
     NDigitos2 = valor3.length ();

     if (NDigitos2! = 2)
     {
       Serial.println ("");
       Serial.println ("VALOR INGRESADO NO VALIDO, VUELVA A INTENTARLO!");
       Serial.println ("DH (%):");
       Serial.println ("");
       retraso (1000);
       valor3 = "";
     }
     más
     {
       Serial.println ("");
       Serial.println ("Valor de DH (%) Guardado ..");
       Serial.println ("");

       para (f = 4; f <6; f ++)
       {
         Digitos2 [f] = EEPROM.read (f);
       }
     }
   }
   si if (Tecla! = NO_KEY && Tecla == 'B')
   {
     para (f = 4; f <6; f ++)
     {
       Digitos2 [f] = EEPROM.read (f);
     }
     valor4 = String (myDigitos2);
     NDigitos2 = valor4.length ();

     if (NDigitos2 == 2)
     {
       Serial.println ("");
       Serial.println ("DH real (%):");
       DH = (((EEPROM.read (4) -48) * 10.0) + ((EEPROM.read (5) -48) * 1.0));
       Serial.print (DH, 2);
       Serial.println ("");
     }
     más
     {
       Serial.println ("");
       Serial.println ("ACTUALMENTE NO EXISTE VALOR DE DH (%) GUARDADO, INGRESE UN VALOR DE DH (%)!");
       Serial.println ("DH (%):");
       Serial.println ("");
       retraso (1000);

       si if (Tecla! = NO_KEY && Tecla == 'C')
       {
         Serial.println ("");
         Serial.println ("Valor De Humedad Borrado ...");
         Serial.println ("Ingrese valor de Humedad a Retirar !!");
         Serial.println ("DH:");
         retraso (1000);
         Serial.print ("");
         valor3 = "";
         valor4 = "";
         NDigitos2 = 0;

         para (f = 4; f <6; f ++)
         {
           EEPROM.write (f, f);
         }   
       }
     }
   }
   while ((Keypad.Key_State ())) {}
 }
}


void Setpoint2 ()
{
 Serial.println ("Ingrese un valor de Altura");
 Serial.println ("Alt:");

 if ((Keypad.Key_State () == 3))
 {
   if (Tecla! = NO_KEY && (Tecla == '0' || Tecla == '1' || Tecla == '2' || Tecla == '3' || Tecla == '4' || Tecla = = '5' || Tecla == '6' || Tecla == '7' || Tecla == '8' || Tecla == '9'))
   {
     valor5 = valor5 + Tecla;
     Serial.print (Tecla);
     retraso (1000);
   }
   si if (Tecla! = NO_KEY && Tecla == 'A')
   {
     valor5.toCharArray (Digitos,2);
     NDigitos = valor5.length ();

     if (NDigitos! = 2)
     {
       Serial.println ("");
       Serial.println ("VALOR INGRESADO NO VALIDO, VUELVA A INTENTARLO!");
       Serial.println ("Alt:");
       Serial.println ("");
       retraso (1000);
       valor5 = "";
     }
     más
     {
       Serial.println ("");
       Serial.println ("Valor de Altura Guardado ..");
       Serial.println ("");

       para (f = 6; f <8; f ++)
       {
         Digitos [g] = EEPROM.read (g);
       }
     }
   }
   si if (Tecla! = NO_KEY && Tecla == 'B')
   {
     para (g = 6; g <8; g ++)
     {
       Digitos [g] = EEPROM.read (g);
     }
     valor6 = String (myDigitos);
     NDigitos = valor6.length ();

     if (NDigitos == 2)
     {
       Serial.println ("");
       Serial.println ("DH real (%):");
       DH = (((EEPROM.read (6) -48) * 10.0) + ((EEPROM.read (7) -48) * 1.0));
       Serial.print (DH, 2);
       Serial.println ("");
     }
     más
     {
       Serial.println ("");
       Serial.println ("ACTUALMENTE NO EXISTE VALOR DE ALTURA GUARDADO, INGRESE UN VALOR DE ALTURA)!");
       Serial.println ("Alt:");
       Serial.println ("");
       retraso (1000);

       si if (Tecla! = NO_KEY && Tecla == 'C')
       {
         Serial.println ("");
         Serial.println ("Valor De Humedad Borrado ...");
         Serial.println ("Ingrese valor altura!!");
         Serial.println ("Alt:");
         retraso (1000);
         Serial.print ("");
         valor5 = "";
         valor6 = "";
         NDigitos = 0;

         para (g = 6; g <8; g ++)
         {
           EEPROM.write (g, g);
         }   
       }
     }
   }
   while ((Keypad.Key_State ())) {}
 }
}

Go Up