Go Down

Topic: Salvar numero de keypad (Read 945 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy