pt aliff
Fork of keypad by
Diff: keypad.h
- 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(); + }; }