4x4 Keypad easy to use library that pollis the interface width pullups
Dependents: 4x4KeyBoardExample xoxokey 4x4KeyBoardExample ProgettoCassaforte ... more
Fork of keypad by
Simple library for reading a 4x4 keypad width at ability to use internal pullups
Import program
00001 #include "mbed.h" 00002 #include "keypad.h" 00003 00004 Serial pc(USBTX, USBRX); 00005 00006 00007 int main() { 00008 // c0 c1 c2 c3 r0 r1 r2 r3 00009 Keypad keypad( PC_3,PC_2,PA_0,PA_1,PA_4,PB_0,PC_1,PC_0 ); 00010 00011 keypad.enablePullUp(); 00012 char key; 00013 pc.printf("Please touch a key on the keypad\n\r"); 00014 while (1) 00015 { 00016 key = keypad.getKey(); 00017 if(key != KEY_RELEASED) 00018 { 00019 pc.printf("%c\r\n",key); 00020 wait(0.6); 00021 } 00022 } 00023 }
Import library
Public Member Functions |
|
Keypad (PinName col0, PinName col1, PinName col2, PinName col3, PinName row0, PinName row1, PinName row2, PinName row3) | |
Create a 4x4 (col, row) or 4x4 keypad interface
. |
|
char | getKey () |
Returns the letter of the pressed key
. |
|
bool | getKeyPressed () |
Detects if any key was pressed.
|
|
void | enablePullUp () |
Enables internal PullUp resistors on the coloums pins.
|
|
Protected Member Functions |
|
int | getKeyIndex () |
return the index value representating the pressed key
|
Diff: keypad.cpp
- Revision:
- 14:d6592dac4365
- Parent:
- 1:fa689a04c361
--- a/keypad.cpp Sat Sep 19 17:13:19 2015 +0000 +++ b/keypad.cpp Sat Sep 19 18:15:01 2015 +0000 @@ -29,44 +29,44 @@ using namespace mbed; -Keypad::Keypad(PinName col0, PinName col1, PinName col2, PinName col3, - PinName row0,PinName row1, PinName row2, PinName row3): - _cols(col0,col1,col2,col3) ,_rows(row0,row1,row2,row3) { } +Keypad::Keypad(PinName col0, PinName col1, PinName col2, PinName col3, + PinName row0,PinName row1, PinName row2, PinName row3): + _cols(col0,col1,col2,col3) ,_rows(row0,row1,row2,row3) { } - void Keypad::enablePullUp() +void Keypad::enablePullUp() { - _cols.mode(PullUp); + _cols.mode(PullUp); } bool Keypad::getKeyPressed() { - _rows = 0; // Ground all keys + _rows = 0; // Ground all keys if(_cols.read()==0xff) //Chk if key is pressed - return false; - - return true; + return false; + + return true; } int Keypad::getKeyIndex() { if (!getKeyPressed()) - return -1; - - //Scan rows and cols and return switch index - for(int i=0; i<4; i++) - { _rows = ~(0x01 << i); - for(int j=0; j<4;j++) - if ( !( (_cols.read()>> j )& 0x1 )) - return j + (i*4); - } + return -1; + + //Scan rows and cols and return switch index + for(int i=0; i<4; i++) { + _rows = ~(0x01 << i); + for(int j=0; j<4; j++) + if ( !( (_cols.read()>> j )& 0x1 )) + return j + (i*4); + } return -1; -} +} char Keypad::getKey() { - int k = getKeyIndex(); - if(k != -1) - return keys[k]; - - return 0; + int k = getKeyIndex(); + if(k != -1) + return keys[k]; + + return 0; }