teclado lcd

Dependencies:   TextLCD keypad mbed

Committer:
serbm
Date:
Sat Feb 25 14:21:11 2017 +0000
Revision:
0:9a67044d749e
teclado con lcd

Who changed what in which revision?

UserRevisionLine numberNew contents of line
serbm 0:9a67044d749e 1 /* mbed Keypad library, using user-defined interrupt callback
serbm 0:9a67044d749e 2 * Copyright (c) 2012 Yoong Hor Meng
serbm 0:9a67044d749e 3 *
serbm 0:9a67044d749e 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
serbm 0:9a67044d749e 5 * of this software and associated documentation files (the "Software"), to deal
serbm 0:9a67044d749e 6 * in the Software without restriction, including without limitation the rights
serbm 0:9a67044d749e 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
serbm 0:9a67044d749e 8 * copies of the Software, and to permit persons to whom the Software is
serbm 0:9a67044d749e 9 * furnished to do so, subject to the following conditions:
serbm 0:9a67044d749e 10 *
serbm 0:9a67044d749e 11 * The above copyright notice and this permission notice shall be included in
serbm 0:9a67044d749e 12 * all copies or substantial portions of the Software.
serbm 0:9a67044d749e 13 *
serbm 0:9a67044d749e 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
serbm 0:9a67044d749e 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
serbm 0:9a67044d749e 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
serbm 0:9a67044d749e 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
serbm 0:9a67044d749e 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
serbm 0:9a67044d749e 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
serbm 0:9a67044d749e 20 * THE SOFTWARE
serbm 0:9a67044d749e 21 */
serbm 0:9a67044d749e 22
serbm 0:9a67044d749e 23 #ifndef KEYPAD_H
serbm 0:9a67044d749e 24 #define KEYPAD_H
serbm 0:9a67044d749e 25
serbm 0:9a67044d749e 26 #include "mbed.h"
serbm 0:9a67044d749e 27 #include "FPointer.h"
serbm 0:9a67044d749e 28
serbm 0:9a67044d749e 29 /**
serbm 0:9a67044d749e 30 * An interrupt-based interface to 4x4 keypad.
serbm 0:9a67044d749e 31 *
serbm 0:9a67044d749e 32 * On each key pressed on a keypad, the index of the key is passed to a
serbm 0:9a67044d749e 33 * user-defined function. User is free to define what to be done with the
serbm 0:9a67044d749e 34 * input.
serbm 0:9a67044d749e 35 *
serbm 0:9a67044d749e 36 * This library makes use of
serbm 0:9a67044d749e 37 * @see http://mbed.org/cookbook/FPointer by Andy Kirkham
serbm 0:9a67044d749e 38 *
serbm 0:9a67044d749e 39 * Example:
serbm 0:9a67044d749e 40 * @code
serbm 0:9a67044d749e 41 * #include "mbed.h"
serbm 0:9a67044d749e 42 * #include "keypad.h"
serbm 0:9a67044d749e 43 *
serbm 0:9a67044d749e 44 * // Define your own keypad values
serbm 0:9a67044d749e 45 * char Keytable[] = { '1', '2', '3', 'A',
serbm 0:9a67044d749e 46 * '4', '5', '6', 'B',
serbm 0:9a67044d749e 47 * '7', '8', '9', 'C',
serbm 0:9a67044d749e 48 * '*', '0', '#', 'D'
serbm 0:9a67044d749e 49 * };
serbm 0:9a67044d749e 50 *
serbm 0:9a67044d749e 51 * uint32_t cbAfterInput(uint32_t index) {
serbm 0:9a67044d749e 52 * printf("Index:%d => Key:%c\n", key, Keytable[index]);
serbm 0:9a67044d749e 53 * return 0;
serbm 0:9a67044d749e 54 * }
serbm 0:9a67044d749e 55 *
serbm 0:9a67044d749e 56 * int main() {
serbm 0:9a67044d749e 57 * Keypad keypad(p25, p26, p27, p28, p21, p22, p23, p24);
serbm 0:9a67044d749e 58 * keypad.CallAfterInput(&cbAfterInput);
serbm 0:9a67044d749e 59 * keypad.Start();
serbm 0:9a67044d749e 60 *
serbm 0:9a67044d749e 61 * while (1) {
serbm 0:9a67044d749e 62 * wait_ms(100);
serbm 0:9a67044d749e 63 * }
serbm 0:9a67044d749e 64 * }
serbm 0:9a67044d749e 65 * @endcode
serbm 0:9a67044d749e 66 */
serbm 0:9a67044d749e 67 class Keypad
serbm 0:9a67044d749e 68 {
serbm 0:9a67044d749e 69 public:
serbm 0:9a67044d749e 70 /** Create a Keypad interface
serbm 0:9a67044d749e 71 *
serbm 0:9a67044d749e 72 * @param row<3..0> Row data lines
serbm 0:9a67044d749e 73 * @param col<3..0> Column data lines
serbm 0:9a67044d749e 74 * @param debounce_ms Debounce in ms (Default to 20ms)
serbm 0:9a67044d749e 75 */
serbm 0:9a67044d749e 76 Keypad(PinName row3, PinName row2, PinName row1, PinName row0,
serbm 0:9a67044d749e 77 PinName col3, PinName col2, PinName col1, PinName col0,
serbm 0:9a67044d749e 78 int debounce_ms = 20);
serbm 0:9a67044d749e 79
serbm 0:9a67044d749e 80 /** Start the keypad interrupt routines
serbm 0:9a67044d749e 81 */
serbm 0:9a67044d749e 82 void Start(void);
serbm 0:9a67044d749e 83
serbm 0:9a67044d749e 84 /** Stop the keypad interrupt routines
serbm 0:9a67044d749e 85 */
serbm 0:9a67044d749e 86 void Stop(void);
serbm 0:9a67044d749e 87
serbm 0:9a67044d749e 88 /** Scan the keyboard for a debounced pressed key
serbm 0:9a67044d749e 89 */
serbm 0:9a67044d749e 90 int DebouncedScan(void);
serbm 0:9a67044d749e 91
serbm 0:9a67044d749e 92 /** Scan the keyboard for a pressed key
serbm 0:9a67044d749e 93 */
serbm 0:9a67044d749e 94 int Scan(void);
serbm 0:9a67044d749e 95
serbm 0:9a67044d749e 96 /** Scan the keyboard for multiple debounced pressed keys
serbm 0:9a67044d749e 97 */
serbm 0:9a67044d749e 98 int DebouncedScanMultiple(void);
serbm 0:9a67044d749e 99
serbm 0:9a67044d749e 100 /** Scan the keyboard for multiple pressed keys
serbm 0:9a67044d749e 101 */
serbm 0:9a67044d749e 102 int ScanMultiple(void);
serbm 0:9a67044d749e 103
serbm 0:9a67044d749e 104 /** User-defined function that to be called when a key is pressed
serbm 0:9a67044d749e 105 * @param fptr A function pointer takes a uint32_t and
serbm 0:9a67044d749e 106 * returns uint32_t
serbm 0:9a67044d749e 107 */
serbm 0:9a67044d749e 108 void CallAfterInput(uint32_t (*fptr)(uint32_t));
serbm 0:9a67044d749e 109
serbm 0:9a67044d749e 110 protected:
serbm 0:9a67044d749e 111 static const int row_count = 4;
serbm 0:9a67044d749e 112 static const int col_count = 4;
serbm 0:9a67044d749e 113
serbm 0:9a67044d749e 114 InterruptIn _row0;
serbm 0:9a67044d749e 115 InterruptIn _row1;
serbm 0:9a67044d749e 116 InterruptIn _row2;
serbm 0:9a67044d749e 117 InterruptIn _row3;
serbm 0:9a67044d749e 118 InterruptIn *_rows[row_count];
serbm 0:9a67044d749e 119 BusInOut _cols; // BusOut doesn't support mode() yet; need open drain to prevent short circuits...
serbm 0:9a67044d749e 120 int _debounce;
serbm 0:9a67044d749e 121 FPointer _input; // Called after each input
serbm 0:9a67044d749e 122
serbm 0:9a67044d749e 123 void _callback();
serbm 0:9a67044d749e 124 void _setupFallTrigger(void);
serbm 0:9a67044d749e 125 };
serbm 0:9a67044d749e 126
serbm 0:9a67044d749e 127 #endif // KEYPAD_H