Go Down

Topic: Salvar numero de keypad (Read 901 times) previous topic - next topic

pal0man

Apr 06, 2011, 12:13 am Last Edit: Apr 06, 2011, 12:47 am by pal0man Reason: 1
Buenas a todos, estoy estancado en un problema y es que no se como guardar un numero cualquiera, de una longitud cualquiera, para luego poder "jugar" con el.
Estoy tratando de hacer un juego tipo MasterMind con un keypad (4x4) y un lcd, pero como os comento me he quedado atorado.

os pego el trozo de código que me da problemas , a ver si podeis hecharme una mano, con alguna sugerencia.

Code: [Select]
//MASTERMIND

void MASTERMIND () {

 
 
  //lcd.clear();              // BORRA LA PANTALLA
  lcd.setCursor(0, 0);      // posiciona el cursor
  lcd.print("MASTERMIND");  // imprime en pantalla
  lcd.setCursor(0, 1);      // posiciona el cursor
  lcd.print("Selec. dif:");  // imprime en pantalla
  lcd.setCursor(12, 1);      // posiciona el cursor
  TECLADO();
 
if (tecla_num != 0 && tecla_num < 10)
   {
   
   muestra_texto = true;
   mm_digitos = tecla_num;
   lcd.clear();              // BORRA LA PANTALLA
   lcd.setCursor(0, 0);      // posiciona el cursor
   lcd.print("JUEGO DE   DIG");  // imprime en pantalla el boton pulsado
   lcd.setCursor(9, 0);      // posiciona el cursor
   lcd.print(mm_digitos);  // imprime en pantalla el boton pulsado
   delay(2000);
   MASTERMIND_JUEGO ();
   primera_pasada = false; //para qu no repita el loop del main
   return;
   }
  else
  {
   muestra_texto = false;
  }



 
}


void    MASTERMIND_JUEGO() {
 
  lcd.clear();
  lcd.setCursor(0, 1);
  lcd.cursor();

  //primera_pasada = false;

  while ( mm_digitos > 0){
   
   switch (mm_digitos){
          case 1:
            tdigito1 = TECLADO(); mm_digitos--;
            lcd.print("JUEGO DE   DIG");
            break;
          case 2:
            tdigito2 = TECLADO(); mm_digitos--;
            break;
          case 3:
            tdigito3 = TECLADO(); mm_digitos--;
            break;
          case 4:
            tdigito4 = TECLADO(); mm_digitos--;
            break;
          case 5:
            tdigito5 = TECLADO(); mm_digitos--;
            break;
          case 6:
            tdigito6 = TECLADO(); mm_digitos--;
            break;
          case 7:
            tdigito7 = TECLADO(); mm_digitos--;
            break;
          case 8:
            tdigito8 = TECLADO(); mm_digitos--;
            break;
          case 9:
            tdigito9 = TECLADO(); mm_digitos--;
            break;
         
           
         
   }
  }
  int numerito = tdigito1 +tdigito2 + tdigito3 + tdigito4;
   lcd.clear();
   if (numerito > 0) // prueba para saber si guarda los numeros
  lcd.print("d");
 
}


y este es el código del teclado, que funciona, pero el do while, me para todo el programa, asi como un contador  de tiempo que tengo asociado

Code: [Select]
int TECLADO ()
{
do {
  char tecla = keypad.getKey();      // lee el teclado por si hay alguna tecla pulsada
 
  if(tecla != NO_KEY)//(tecla) // same as if(key != NO_KEY)- did something change?
  {     
     
      switch (tecla)
    {
    case '0':
      tecla_num = 0;
      if (muestra_texto == true)
      lcd.print("0"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;

    case '1':
      tecla_num = 1;
      if (muestra_texto == true)
      lcd.print("1"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;


    case '2':
      tecla_num = 2;
      if (muestra_texto == true)
      lcd.print("2"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;


    case '3':
      tecla_num = 3;
      if (muestra_texto == true)
      lcd.print("3"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;


    case '4':
      tecla_num = 4;
      if (muestra_texto == true)
      lcd.print("4"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;


    case '5':
      tecla_num = 5;
      if (muestra_texto == true)
      lcd.print("5"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;


    case '6':
      tecla_num = 6;
      if (muestra_texto == true)
      lcd.print("6"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;


    case '7':
      tecla_num = 7;
      if (muestra_texto == true)
      lcd.print("7"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;


    case '8':
      tecla_num = 8;
      if (muestra_texto == true)
      lcd.print("8"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;


    case '9':
      tecla_num = 9;
      if (muestra_texto == true)
      lcd.print("9"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;


    case '*':
      tecla_num = 14;
      if (muestra_texto == true)
      lcd.print("*"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;


    case '#':
      tecla_num = 15;
      if (muestra_texto == true)
      lcd.print("#"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;

    case 'A':
      tecla_num = 10;
      if (muestra_texto == true)
      lcd.print("A"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;


    case 'B':
      tecla_num = 11;
      if (muestra_texto == true)
      lcd.print("B"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;


    case 'C':
      tecla_num = 12;
      if (muestra_texto == true)
      lcd.print("C"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;


    case 'D':
      tecla_num = 13;
      if (muestra_texto == true)
      lcd.print("D"); // imprime en pantalla el boton pulsado
      return tecla_num;
      break;

   
    } // final del swich

   
  } // end if key pressed
 
} while (1 > 0);
}
//--------------------------TECLADO------------------------------------



gracias  y un saludo a todos.

Go Up