# Combining digits from the keypad.getKey() function

...

``````void loop(){

if (key != NO_KEY) {
Serial.println(key);
}
}
``````

If the user wanted to input the number 10, how would I 'get' that number from the two keypresses '1' and '0' I haven't written any code yet for the keypad, but here's what I'm thinking: lcd.print: "Enter the number of cups of coffee & press #" user can enter a number (2,4,6,8,10) So if they they enter 2 digits, I need to combine them into 1 variable.

Well, just take the inputs & do some math on it: before reading clear the prior entries digit1 = 0 digit0 = 0

after you get the entries total = 10*(digit1) + digit0

Or, you will have a 4x3 keypad? Make one of the keys = 10. 1-2-3-4-5-6-7-8-9-10-enter-clear 0 = 10,

# = clear,

• = enter

CrossRoads: Well, just take the inputs & do some math on it: before reading clear the prior entries digit1 = 0 digit0 = 0

after you get the entries total = 10*(digit1) + digit0

Or, you will have a 4x3 keypad? Make one of the keys = 10. 1-2-3-4-5-6-7-8-9-10-enter-clear 0 = 10,

# = clear,

• = enter

Thanks, yes, 3x4, I see now. I could do either of these...

i`m just wondering about the maths part, as to whether it would still parse as ASCII? and thus be useless for any Math type functions. the only reason I`m bringing up this old(ish) thread is that I had a similar problem trying to parse these numbers as REAL ones rather than some arbitrary ASCII equiv.
after a good mess about I discovered that you CAN in fact do this with the keypad Lib, my HEX keymap now looks like:

char keys[ROWS][COLS] = {
{0x000c,0x000d,0x000e,0x000f},
{0x0008,0x0009,0x000a,0x000b},
{0x0004,0x0005,0x0006,0x0007},
{0x0000,0x0001,0x0002,0x0003}
};

This isn`t the End of my Journey yet, as I still need to then push these out to 1 Byte serial piso 74595`s yet ( 3 of them) 2 for Address and one for Data.
but it`s enough to perhaps help Some along the way

All the best!

as char is only one byte big your char map should be

char keys[ROWS][COLS] = {
{0x0c,0x0d,0x0e,0x0f},
{0x08,0x09,0x0a,0x0b},
{0x04,0x05,0x06,0x07},
{0x00,0x01,0x02,0x03}
};

but better use the chars directly in your array :

char keys[3][4] = {
{‘7’,‘8’,‘9’},
{‘4’,‘5’,‘6’},
{‘1’,‘2’,‘3’},
{’*’.‘0’.’#’}
};

or use the int values you want except for the * and # all is possible.

char keys[3][4] = {
{7,8,9},
{4,5,6},
{1,2,3},
{’*’,0,’#’}
};

yeah, this is still a bit new(ish) to me, the problem that I`m going to (have already) hit, is concatenating 2 Hex values into a single byte to push out to the Hardware serial array.

I certainly can`t Add them. and I see no Nibble Splice command??????

and my Math is pathetic on a Good day :)

upper_nibble = upperByte<<4 ; // shifts bits 4 left, leaving 0bXXXX0000 (or whatever the prefix is for BITs)
lower_nibble = 0x0F & lowerByte; // Zero’s out upper bits, leaving 0b0000YYYY

combined = lower_nibble | upper_nibble; // ORs together for 0bXXXXYYYY