Tests forked Keypad library.

Dependencies:   FPointer keypad mbed

Schematic:

http://schind.nl/keypad.png

No extra hardware is needed besides the wires and switches. The columns are outputs configured with open drain. The rows are inputs configured with pull up resistors. A key press pulls down its row. With scanning the column is determined thereafter.

See keypad for the forked library used in this project.

Revision:
0:5410e5950602
Child:
1:8bbe2b267de6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Nov 02 22:52:44 2012 +0000
@@ -0,0 +1,57 @@
+#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()
+{
+    printf("*** Keypad Demo ***\n");
+
+    memset(&Buffer, 0, KEYLEN);
+    Index = 0;
+    Keypad keypad(p25, p26, p27, p28, p21, p22, p23, p24);
+    keypad.CallAfterInput(&cbAfterInput);
+
+    keypad.Start();
+    while (1) {
+        Sleep();
+    }
+}
\ No newline at end of file