scan a 3x4 keypad with softaware pulldown resistors by polling it continuously.

Fork of keypad by Dimiter K

Committer:
fangoman91
Date:
Fri May 08 06:50:54 2015 +0000
Revision:
1:b8305e120e11
Dimiter Kentry update. Eliminate one column and add software pulldown resistors

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fangoman91 1:b8305e120e11 1
fangoman91 1:b8305e120e11 2
fangoman91 1:b8305e120e11 3 //Dimiter Kentri update
fangoman91 1:b8305e120e11 4
fangoman91 1:b8305e120e11 5
fangoman91 1:b8305e120e11 6 /* Copyright (c) 2010 Dimiter Kentri
fangoman91 1:b8305e120e11 7
fangoman91 1:b8305e120e11 8 Permission is hereby granted, free of charge, to any person obtaining a copy
fangoman91 1:b8305e120e11 9 of this software and associated documentation files (the "Software"), to deal
fangoman91 1:b8305e120e11 10 in the Software without restriction, including without limitation the rights
fangoman91 1:b8305e120e11 11 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
fangoman91 1:b8305e120e11 12 copies of the Software, and to permit persons to whom the Software is
fangoman91 1:b8305e120e11 13 furnished to do so, subject to the following conditions:
fangoman91 1:b8305e120e11 14
fangoman91 1:b8305e120e11 15 The above copyright notice and this permission notice shall be included in
fangoman91 1:b8305e120e11 16 all copies or substantial portions of the Software.
fangoman91 1:b8305e120e11 17
fangoman91 1:b8305e120e11 18 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
fangoman91 1:b8305e120e11 19 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
fangoman91 1:b8305e120e11 20 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
fangoman91 1:b8305e120e11 21 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
fangoman91 1:b8305e120e11 22 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
fangoman91 1:b8305e120e11 23 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
fangoman91 1:b8305e120e11 24 THE SOFTWARE.
fangoman91 1:b8305e120e11 25 */
fangoman91 1:b8305e120e11 26
fangoman91 1:b8305e120e11 27 /*Simple example
fangoman91 1:b8305e120e11 28
fangoman91 1:b8305e120e11 29 #include "mbed.h"
fangoman91 1:b8305e120e11 30 #include "keypad.h"
fangoman91 1:b8305e120e11 31
fangoman91 1:b8305e120e11 32 Serial pc(USBTX, USBRX);
fangoman91 1:b8305e120e11 33 Keypad telepad(p13,p14,p15,p17,p18,p19,p20);
fangoman91 1:b8305e120e11 34
fangoman91 1:b8305e120e11 35 int main(void){
fangoman91 1:b8305e120e11 36 char key;
fangoman91 1:b8305e120e11 37 pc.printf("Enter codes\n\r");
fangoman91 1:b8305e120e11 38 while(1){
fangoman91 1:b8305e120e11 39 key = telepad.getKey();
fangoman91 1:b8305e120e11 40 if(key != KEY_RELEASED){
fangoman91 1:b8305e120e11 41 pc.printf("%c\n",key);
fangoman91 1:b8305e120e11 42 wait(0.6);
fangoman91 1:b8305e120e11 43 }
fangoman91 1:b8305e120e11 44 }
fangoman91 1:b8305e120e11 45 }*/
fangoman91 1:b8305e120e11 46
fangoman91 1:b8305e120e11 47 #ifndef KEYPAD3x4_H
fangoman91 1:b8305e120e11 48 #define KEYPAD3x4_H
fangoman91 1:b8305e120e11 49
fangoman91 1:b8305e120e11 50 #include "DigitalIn.h"
fangoman91 1:b8305e120e11 51 #include "BusOut.h"
fangoman91 1:b8305e120e11 52
fangoman91 1:b8305e120e11 53
fangoman91 1:b8305e120e11 54 namespace mbed
fangoman91 1:b8305e120e11 55 {
fangoman91 1:b8305e120e11 56 const char NO_KEY = '\0';
fangoman91 1:b8305e120e11 57 #define KEY_RELEASED NO_KEY
fangoman91 1:b8305e120e11 58 const int keys[12] = {'1','2','3','4','5','6','7','8','9','*','0','#',};
fangoman91 1:b8305e120e11 59 class Keypad
fangoman91 1:b8305e120e11 60 {
fangoman91 1:b8305e120e11 61 public:
fangoman91 1:b8305e120e11 62 Keypad(PinName col1,PinName col2,PinName col3,PinName row1,PinName row2,PinName row3,PinName row4);
fangoman91 1:b8305e120e11 63 char getKey();
fangoman91 1:b8305e120e11 64 protected:
fangoman91 1:b8305e120e11 65 int getKeyIndex();
fangoman91 1:b8305e120e11 66 DigitalIn _col1,_col2,_col3;
fangoman91 1:b8305e120e11 67 BusOut _rows;
fangoman91 1:b8305e120e11 68 };
fangoman91 1:b8305e120e11 69 }
fangoman91 1:b8305e120e11 70 #endif