pt aliff

Fork of keypad by Dimiter K

Revision:
1:ced7b1445bc4
Parent:
0:1fa357ea3fcc
--- a/keypad.h	Sat Nov 06 14:36:22 2010 +0000
+++ b/keypad.h	Mon Jun 04 16:01:47 2018 +0000
@@ -1,4 +1,6 @@
-/*	 Copyright (c) 2010 Dimiter Kentri
+/*mbed simple 4x4 keypad library, using polling
+
+	 Copyright (c) 2015 Rune Langøy
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -25,28 +27,111 @@
 #include "DigitalIn.h"
 #include "BusOut.h"
 
-
-namespace mbed{
+namespace mbed
+{
 
 const char NO_KEY = '\0';
 #define KEY_RELEASED NO_KEY
-          
+
+/** @brief table showing the printed layout of the keypad \n
+ */
+const char keys[16] = {'1','2','3','F',
+                       '4','5','6','E',
+                       '7','8','9','D',
+                       'A','0','B','C'
+                      };
+/**
+* An simple polling-based interface to read a 4x4 keypad.
+*
+* The function getKey() reads  the index of the pressed key
+* and returns the letter of the pressed key
+*
+*  This work is a derivative of the works done by:
+*    Dimiter Kentri in 2010 https://developer.mbed.org/users/DimiterK/code/keypad/
+*  and
+*    Yoong Hor Meng in 2012 https://developer.mbed.org/users/yoonghm/code/keypad/
+*
+* Example:
+* @code
+* #include "mbed.h"
+* #include "keypad.h"
+*
+* Serial pc(USBTX, USBRX);
+* Keypad keypad(D3,D4,D5,D6,D7,D8,D9,D10);
+* // Keypad keypad( PC_3,PC_2,PA_0,PA_1,PA_4,PB_0,PC_1,PC_0 ); // Tested on  Nucleo303RE card
+*
+* int main(void)
+* {
+*  keypad.enablePullUp();
+*  char key;
+*  pc.printf("Please touch a key on the keypad\r\n");
+*  while(1)
+*  {
+*	key = keypad.getKey();
+* 	if(key != KEY_RELEASED)
+*	{
+*	   pc.printf("%c\r\n",key);
+*	   wait(0.2);
+*	 }
+*  }
+* }
+* @endcode
+
+*/
 
-       
-const int keys[16] = {'1','2','3','A',
-                      '4','5','6','B',
-                      '7','8','9','C',
-                      '*','0','#','D'};
-                      
-class Keypad{    
-    public:
-        Keypad(PinName col1, PinName col2, PinName col3, PinName col4, PinName row1,PinName row2, PinName row3, PinName row4);
-        int getKeyIndex();
-        char getKey();
+class Keypad
+{
+public:
+    /**  @brief Create a 4x4 (col, row) or 4x4 keypad interface\n
+     *  <pre>
+     *          | Col0 | Col1 | Col2 | Col3   \n
+     *   -------+------+------+------+-----   \n
+     *   Row 0  |   x  |   x  |   x  |  x     \n
+     *   Row 1  |   x  |   x  |   x  |  x     \n
+     *   Row 2  |   x  |   x  |   x  |  x     \n
+     *   Row 3  |   x  |   x  |   x  |  x     \n
+     *  </pre>
+     *
+     *  @param col<0..3>     Row data lines
+     *  @param row<0..3>     Column data lines
+     */
+    Keypad(PinName col0, PinName col1, PinName col2, PinName col3, PinName row0,PinName row1, PinName row2, PinName row3);
+
+    /** @brief  Returns the letter of the pressed key \n
+     *
+     *  @return char
+     *  @returns
+     *     The pressed character\n
+     *     '\0' or NO_KEY if no keys was pressed
+     */
+    char getKey();
 
-    protected:
-        DigitalIn _col1,_col2,_col3,_col4;    
-        BusOut _rows;
+    /** @brief Detects if any key was pressed
+    *
+    *   @return bool
+    *   @retval true   a key is pressed
+    *   @retval false  no keys was not pressed
+    */
+    bool getKeyPressed();
+    /**  Enables internal PullUp resistors on the coloums pins
+    *
+    *  @return void
+    */
+    void enablePullUp();
+
+protected:
+    BusIn  _cols;
+    BusOut _rows;
+    /** @brief return the index value
+    *      representating the pressed key \n
+    *
+    *  @return int
+    *  @returns
+    *    The index representing the pushed key used in table keys\n
+    *    -1 if no key was pressed
+    */
+    int getKeyIndex();
+
 };
 
 }