Como armazena 2numeros ou + em uma variavel usando o keypad? HELP!!!!!

Bom pessoal , peço essa ajuda pra vocês o problema acredito que não é tão complicado para os mais experientes.

   Vamos lá , o que eu estou querendo é armazenar um numero com 2 algarismos ou mais para uma variável usando a keypad.h , estou apanhando mais é assim mesmo , tem que ser humilde e pedi ajuda , tentei mais não deu hehehe , com apenas 1 algarismo eu consigo sem problema feito nesse exemplo abaixo que é parte do meu cod , só está faltando isso basicamente para eu finalizar.

   Exemplo: eu digito o numero 1 ai eu consigo armazenar esse numero 1 na variavel  SelectedNumber até ai tudo bem está funcionando blz , só que eu quero digitar qualquer numero , 101 , 543 , 50 , 3  pra ficar mais claro e etc pois no meu cod estou limitado a apenas 10 numeros ou seja de 0 até 9 , não estou sabendo manipular , espero que algum amigo me ajude ai , como eu faço isso?  abaixo apenas uma parte do meu cod que é o que interessa.

agradeço desde já a ajuda de algum amigo.

void loop()

{

    char key;
    int SelectedNumber = 0;
    
    key =  keypad.getKey();
    if (   key == '0' || key == '1' || key == '2'
        || key == '3' || key == '4' || key == '5'
        || key == '6' || key == '7' || key == '8'
        || key == '9')
          
     { 
    SelectedNumber = key -= 48 ; // apenas 1 numero funcionar sem problema.
    Serial.print("Numero da ID: ");
    Serial.println(SelectedNumber);
    delay(300);
    
    digitalWrite(led , 1);
    delay(1000);
    digitalWrite(led , 0);
    SendData ( Command_Enroll , SelectedNumber , 0 , CHECK_FINGER ); //Envia o camando de enroll (cadastrar)
    
    delay(100);
     }

}

///////////////////////////////////////////////////////////////////////////

já tentei assim também , mais não deu certo , quero digitar qualquer numero e ser armazenado na variavel SelectedNumber , o resultado é que ele armazena apenas o primeiro numero digitado e se eu colocar o millis() para que eu consiga digitar sem  executar o outro comando acontece duplicidade do mesmo digito ou seja , ex: se eu digita 23 o resultado é 22 , 47------44 , 81------88 deu pra ficar claro , não estou conseguindo , por favor uma ajuda , valeu.

     if (ptr == 2) ptr = 0; //retorna ao início
     temp[ptr++] = key;//usa ptr e armazena key em ptr e no final incrementa o ptr 
     temp[ptr] = '\0'; //Coloca o caracter terminador o que torna o array temp numa string,
    SelectedNumber = atoi(temp);//Converte de string para int so que ja esta a converter apenas uma tecla!.Nao esta a fazer controle da segunda tecla ou mais (caso queiras 1111)
    Serial.print("Numero da ID: ");
    Serial.println(SelectedNumber);
    delay(300);

Exibições: 421

Responder esta

Respostas a este tópico

Conseguiste resolver? também estou com o mesmo problema.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço