Fork without short circuits

Dependents:   SaveKeypad

Fork of keypad by HM Yoong

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 SaveKeypad for an example usage.

Revision:
10:9a9ec143840b
Parent:
9:e48ba5b4c497
Child:
11:a45e64141ce6
--- a/keypad.h	Tue Jan 31 00:31:58 2012 +0000
+++ b/keypad.h	Fri Nov 02 22:42:28 2012 +0000
@@ -40,31 +40,32 @@
  * @code
  * #include "mbed.h"
  * #include "keypad.h"
- * 
+ *
  * // 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 index) {
  *     printf("Index:%d => Key:%c\n", key, Keytable[index]);
  *     return 0;
  * }
- * 
+ *
  * int main() {
  *     Keypad keypad(p25, p26, p27, p28, p21, p22, p23, p24);
  *     keypad.CallAfterInput(&cbAfterInput);
  *     keypad.Start();
- * 
+ *
  *     while (1) {
  *         wait_ms(100);
  *     }
  * }
  * @endcode
  */
-class Keypad {
+class Keypad
+{
 public:
     /** Create a Keypad interface
      *
@@ -95,17 +96,17 @@
     InterruptIn      _row1;
     InterruptIn      _row2;
     InterruptIn      _row3;
-    BusOut           _cols;
+    BusInOut         _cols;  // BusOut doesn't support mode() yet; need open drain to prevent short circuits...
     int              _debounce;
     FPointer         _input; // Called after each input
 
     void _callback(int row, InterruptIn &therow);
-    void _cbRow0Rise(void);
-    void _cbRow1Rise(void);
-    void _cbRow2Rise(void);
-    void _cbRow3Rise(void);
-    void _setupRiseTrigger(void);
+    void _cbRow0Fall(void);
+    void _cbRow1Fall(void);
+    void _cbRow2Fall(void);
+    void _cbRow3Fall(void);
+    void _setupFallTrigger(void);
     void _dummy(void) { };
 };
 
-#endif // KEYPAD_H
\ No newline at end of file
+#endif // KEYPAD_H