Stránka 1 z 1

KeyPad a PIN s nekolika cisly

Napsal: 14 lis 2022, 16:05
od Kony
Ahoj, snazim se pres Keypad ulozit nekolikamistny PIN....

Kód: Vybrat vše

void loop()
{
  char keys[] = "123A456B789C*0#DNF";  // N = Nokey, F = Fail
  uint8_t idx = keyPad.getKey();
  if (idx != lastKey & keys[idx] != 'N') {
    klavesy=(klavesy*10)+keys[idx];
    lastKey = idx;
    Serial.println(klavesy);
    if (klavesy > 999999) {klavesy = 0;};
   }
  delay(100);
}
ale pri mackani od 1-6 to vypise :

Kód: Vybrat vše

16:03:10.890 -> 49
16:03:11.879 -> 540
16:03:12.588 -> 5451
16:03:13.392 -> 54562
16:03:14.002 -> 545673
16:03:14.806 -> 5456784
16:03:15.706 -> 55

Re: KeyPad a PIN s nekolika cisly

Napsal: 14 lis 2022, 16:25
od kiRRow
Protože ti to příjde jako ASCII znak ... 1=49, 2=50 ... atp ... schválně si spočítej 49*10+50

Re: KeyPad a PIN s nekolika cisly

Napsal: 14 lis 2022, 16:25
od Kony
aha.... a jak to predelat na normalni cislo ?

Re: KeyPad a PIN s nekolika cisly

Napsal: 14 lis 2022, 16:31
od kiRRow
odečíst 48 ?
klavesy=(klavesy*10)+(keys[idx]-48);
akorát bych si kontroloval jestli keys[idx] je v rozsahu 48 - 57

Re: KeyPad a PIN s nekolika cisly

Napsal: 14 lis 2022, 16:36
od Kony
To uz funguje, ale neresi to muj problem :)))
Potrebuji aby se cisla k sobe pricitali.. jako bych napsal PIN 123456

Potrebuji napsat PIN a pomoci # odeslat

Re: KeyPad a PIN s nekolika cisly

Napsal: 14 lis 2022, 17:05
od kiRRow
Přičítali, nebo připisovali ? Výsledkem prvního bude 1+2+3+4+5+6 = 21, výsledkem toho druhého bude 123456, toho docílíš tak jak píšeš klavesy = (klavesy*10)+(keys[idx]-48); ... musíš si ale ohlídat aby keys[idx] byl v rozsahu 48 - 57 ... pokud bude mimo tento rozsah, stisknul jsi něco jiného než 0 až 9 a je třeba provést jinou operaci než připisování čísel.