Interrupt-driven keypad interface library. Compatible with RTOS. Able to handle various keypad size below 4x4.
main.cpp
- Committer:
- yoonghm
- Date:
- 2012-01-30
- Revision:
- 0:8209bcf62e0a
- Child:
- 1:1ae4a77af85b
File content as of revision 0:8209bcf62e0a:
#include "mbed.h" #include "keypad.h" #define KEYLEN 4 #define ENDKEY 15 char Buffer[KEYLEN]; int Index = 0; // Define your own keypad values char Keytable[] = { '1', '2', '3', 'A', '4', '5', '6', 'B', '7', '8', '9', 'C', '*', '0', '#', 'D' }; uint32_t cbAfterInput(uint32_t key) { bool finish = false; printf("Index:%d => Key:%c\n", Index, Keytable[key]); if (Index < KEYLEN - 1) { if (key != ENDKEY) // Terminating key Buffer[Index] = Keytable[key]; else // Terminating key is entered finish = true; Index++; } if (finish || (Index == KEYLEN - 1)) { printf("Complete string = %s\n", Buffer); memset(&Buffer, 0, KEYLEN); Index = 0; } return 0; } void Sleep(void) { __WFI(); } int main() { memset(&Buffer, 0, KEYLEN); Index = 0; Keypad keypad(p25, p26, p27, p28, p21, p22, p23, p24); keypad.CallAfterInput(&cbAfterInput); keypad.Start(); while (1) { Sleep(); } }