Keypad that has 12 keys for input
Dependents: Input_Keypad MARISOL Final_Project
KeyPad.cpp@0:34c3354147cf, 2015-03-12 (annotated)
- Committer:
- anevil14
- Date:
- Thu Mar 12 17:11:01 2015 +0000
- Revision:
- 0:34c3354147cf
Numeric Keypad with some symbols and is built like a 4*3 Matrix
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
anevil14 | 0:34c3354147cf | 1 | #include "KeyPad.h" |
anevil14 | 0:34c3354147cf | 2 | //#include "mbed.h" |
anevil14 | 0:34c3354147cf | 3 | |
anevil14 | 0:34c3354147cf | 4 | |
anevil14 | 0:34c3354147cf | 5 | KeyPad2::KeyPad2(PinName pin3, PinName pin1 ,PinName pin5 ,PinName pin2, PinName pin7,PinName pin6, PinName pin4){ |
anevil14 | 0:34c3354147cf | 6 | // KeyPad2 keypad(p25, p27, p23, p26, p21, p22, p24); |
anevil14 | 0:34c3354147cf | 7 | switchrate = 0.001; |
anevil14 | 0:34c3354147cf | 8 | |
anevil14 | 0:34c3354147cf | 9 | |
anevil14 | 0:34c3354147cf | 10 | columnoneout = new DigitalOut ( pin3 ); // pin 3 on keypad |
anevil14 | 0:34c3354147cf | 11 | columntwoout = new DigitalOut ( pin1 ); // pin 1 on keypad |
anevil14 | 0:34c3354147cf | 12 | columnthreeout = new DigitalOut ( pin5 ); // pin 5 on keypad |
anevil14 | 0:34c3354147cf | 13 | |
anevil14 | 0:34c3354147cf | 14 | rowonein = new DigitalIn ( pin2 ); // pin 2 on keypad |
anevil14 | 0:34c3354147cf | 15 | rowtwoin = new DigitalIn ( pin7 ); // pin 7 on keypad |
anevil14 | 0:34c3354147cf | 16 | rowthreein = new DigitalIn ( pin6 ); // pin 6 on keypad |
anevil14 | 0:34c3354147cf | 17 | rowfourin = new DigitalIn ( pin4 ); // pin 4 on keypad |
anevil14 | 0:34c3354147cf | 18 | |
anevil14 | 0:34c3354147cf | 19 | } |
anevil14 | 0:34c3354147cf | 20 | |
anevil14 | 0:34c3354147cf | 21 | |
anevil14 | 0:34c3354147cf | 22 | KeyPad2::~KeyPad2(){ |
anevil14 | 0:34c3354147cf | 23 | delete[] columnoneout; |
anevil14 | 0:34c3354147cf | 24 | delete[] columntwoout; |
anevil14 | 0:34c3354147cf | 25 | delete[] columnthreeout; |
anevil14 | 0:34c3354147cf | 26 | delete[] rowonein; |
anevil14 | 0:34c3354147cf | 27 | delete[] rowtwoin; |
anevil14 | 0:34c3354147cf | 28 | delete[] rowthreein; |
anevil14 | 0:34c3354147cf | 29 | delete[] rowfourin; |
anevil14 | 0:34c3354147cf | 30 | } |
anevil14 | 0:34c3354147cf | 31 | |
anevil14 | 0:34c3354147cf | 32 | void KeyPad2::setswitchrate(double switchrate){ // sets the rate which you switch between powering each column |
anevil14 | 0:34c3354147cf | 33 | this->switchrate = switchrate; |
anevil14 | 0:34c3354147cf | 34 | } |
anevil14 | 0:34c3354147cf | 35 | |
anevil14 | 0:34c3354147cf | 36 | |
anevil14 | 0:34c3354147cf | 37 | |
anevil14 | 0:34c3354147cf | 38 | |
anevil14 | 0:34c3354147cf | 39 | std::vector<int> KeyPad2::getkey(){ // powers each column of the keypad once based upon the time divisions of switchrate, returns keys in sorted order |
anevil14 | 0:34c3354147cf | 40 | std::vector<int> keyspressed; |
anevil14 | 0:34c3354147cf | 41 | |
anevil14 | 0:34c3354147cf | 42 | bool addedone, addedtwo, addedthree, addedfour; |
anevil14 | 0:34c3354147cf | 43 | clock_t start; |
anevil14 | 0:34c3354147cf | 44 | //check 2nd column |
anevil14 | 0:34c3354147cf | 45 | *columnoneout = 0; |
anevil14 | 0:34c3354147cf | 46 | *columntwoout = 1; |
anevil14 | 0:34c3354147cf | 47 | *columnthreeout = 0; |
anevil14 | 0:34c3354147cf | 48 | |
anevil14 | 0:34c3354147cf | 49 | start = clock(); |
anevil14 | 0:34c3354147cf | 50 | |
anevil14 | 0:34c3354147cf | 51 | addedone = false; |
anevil14 | 0:34c3354147cf | 52 | addedtwo =false; |
anevil14 | 0:34c3354147cf | 53 | addedthree = false; |
anevil14 | 0:34c3354147cf | 54 | addedfour = false; |
anevil14 | 0:34c3354147cf | 55 | |
anevil14 | 0:34c3354147cf | 56 | while (clock() - start < switchrate*CLOCKS_PER_SEC){ |
anevil14 | 0:34c3354147cf | 57 | if ( *rowonein == 1 && !addedone ){ |
anevil14 | 0:34c3354147cf | 58 | keyspressed.push_back(2); |
anevil14 | 0:34c3354147cf | 59 | addedone = true; |
anevil14 | 0:34c3354147cf | 60 | } |
anevil14 | 0:34c3354147cf | 61 | |
anevil14 | 0:34c3354147cf | 62 | if ( *rowtwoin == 1 && !addedtwo){ |
anevil14 | 0:34c3354147cf | 63 | keyspressed.push_back(5); |
anevil14 | 0:34c3354147cf | 64 | addedtwo = true; |
anevil14 | 0:34c3354147cf | 65 | } |
anevil14 | 0:34c3354147cf | 66 | |
anevil14 | 0:34c3354147cf | 67 | if ( *rowthreein == 1 && !addedthree ){ |
anevil14 | 0:34c3354147cf | 68 | keyspressed.push_back(8); |
anevil14 | 0:34c3354147cf | 69 | addedthree = true; |
anevil14 | 0:34c3354147cf | 70 | } |
anevil14 | 0:34c3354147cf | 71 | |
anevil14 | 0:34c3354147cf | 72 | if ( *rowfourin == 1 && !addedfour){ |
anevil14 | 0:34c3354147cf | 73 | keyspressed.push_back(11); |
anevil14 | 0:34c3354147cf | 74 | addedfour = true; |
anevil14 | 0:34c3354147cf | 75 | } |
anevil14 | 0:34c3354147cf | 76 | } |
anevil14 | 0:34c3354147cf | 77 | |
anevil14 | 0:34c3354147cf | 78 | |
anevil14 | 0:34c3354147cf | 79 | //check first column |
anevil14 | 0:34c3354147cf | 80 | *columnoneout = 1; |
anevil14 | 0:34c3354147cf | 81 | *columntwoout = 0; |
anevil14 | 0:34c3354147cf | 82 | *columnthreeout = 0; |
anevil14 | 0:34c3354147cf | 83 | |
anevil14 | 0:34c3354147cf | 84 | start = clock(); |
anevil14 | 0:34c3354147cf | 85 | |
anevil14 | 0:34c3354147cf | 86 | addedone = false; |
anevil14 | 0:34c3354147cf | 87 | addedtwo =false; |
anevil14 | 0:34c3354147cf | 88 | addedthree = false; |
anevil14 | 0:34c3354147cf | 89 | addedfour = false; |
anevil14 | 0:34c3354147cf | 90 | |
anevil14 | 0:34c3354147cf | 91 | |
anevil14 | 0:34c3354147cf | 92 | // check first column |
anevil14 | 0:34c3354147cf | 93 | while (clock() - start < switchrate*CLOCKS_PER_SEC){ |
anevil14 | 0:34c3354147cf | 94 | if ( *rowonein == 1 && !addedone ){ |
anevil14 | 0:34c3354147cf | 95 | keyspressed.push_back(1); |
anevil14 | 0:34c3354147cf | 96 | addedone = true; |
anevil14 | 0:34c3354147cf | 97 | } |
anevil14 | 0:34c3354147cf | 98 | |
anevil14 | 0:34c3354147cf | 99 | if ( *rowtwoin == 1 && !addedtwo){ |
anevil14 | 0:34c3354147cf | 100 | keyspressed.push_back(4); |
anevil14 | 0:34c3354147cf | 101 | addedtwo = true; |
anevil14 | 0:34c3354147cf | 102 | } |
anevil14 | 0:34c3354147cf | 103 | |
anevil14 | 0:34c3354147cf | 104 | if ( *rowthreein == 1 && !addedthree ){ |
anevil14 | 0:34c3354147cf | 105 | keyspressed.push_back(7); |
anevil14 | 0:34c3354147cf | 106 | addedthree = true; |
anevil14 | 0:34c3354147cf | 107 | } |
anevil14 | 0:34c3354147cf | 108 | |
anevil14 | 0:34c3354147cf | 109 | if ( *rowfourin == 1 && !addedfour){ |
anevil14 | 0:34c3354147cf | 110 | keyspressed.push_back(10); |
anevil14 | 0:34c3354147cf | 111 | addedfour = true; |
anevil14 | 0:34c3354147cf | 112 | } |
anevil14 | 0:34c3354147cf | 113 | } |
anevil14 | 0:34c3354147cf | 114 | |
anevil14 | 0:34c3354147cf | 115 | |
anevil14 | 0:34c3354147cf | 116 | |
anevil14 | 0:34c3354147cf | 117 | //check 3rd column |
anevil14 | 0:34c3354147cf | 118 | |
anevil14 | 0:34c3354147cf | 119 | *columnoneout = 0; |
anevil14 | 0:34c3354147cf | 120 | *columntwoout = 0; |
anevil14 | 0:34c3354147cf | 121 | *columnthreeout = 1; |
anevil14 | 0:34c3354147cf | 122 | |
anevil14 | 0:34c3354147cf | 123 | start = clock(); |
anevil14 | 0:34c3354147cf | 124 | |
anevil14 | 0:34c3354147cf | 125 | addedone = false; |
anevil14 | 0:34c3354147cf | 126 | addedtwo =false; |
anevil14 | 0:34c3354147cf | 127 | addedthree = false; |
anevil14 | 0:34c3354147cf | 128 | addedfour = false; |
anevil14 | 0:34c3354147cf | 129 | |
anevil14 | 0:34c3354147cf | 130 | while (clock() - start < switchrate*CLOCKS_PER_SEC){ |
anevil14 | 0:34c3354147cf | 131 | if ( *rowonein == 1 && !addedone ){ |
anevil14 | 0:34c3354147cf | 132 | keyspressed.push_back(3); |
anevil14 | 0:34c3354147cf | 133 | addedone = true; |
anevil14 | 0:34c3354147cf | 134 | } |
anevil14 | 0:34c3354147cf | 135 | |
anevil14 | 0:34c3354147cf | 136 | if ( *rowtwoin == 1 && !addedtwo){ |
anevil14 | 0:34c3354147cf | 137 | keyspressed.push_back(6); |
anevil14 | 0:34c3354147cf | 138 | addedtwo = true; |
anevil14 | 0:34c3354147cf | 139 | } |
anevil14 | 0:34c3354147cf | 140 | |
anevil14 | 0:34c3354147cf | 141 | if ( *rowthreein == 1 && !addedthree ){ |
anevil14 | 0:34c3354147cf | 142 | keyspressed.push_back(9); |
anevil14 | 0:34c3354147cf | 143 | addedthree = true; |
anevil14 | 0:34c3354147cf | 144 | } |
anevil14 | 0:34c3354147cf | 145 | |
anevil14 | 0:34c3354147cf | 146 | if ( *rowfourin == 1 && !addedfour){ |
anevil14 | 0:34c3354147cf | 147 | keyspressed.push_back(12); |
anevil14 | 0:34c3354147cf | 148 | addedfour = true; |
anevil14 | 0:34c3354147cf | 149 | } |
anevil14 | 0:34c3354147cf | 150 | } |
anevil14 | 0:34c3354147cf | 151 | |
anevil14 | 0:34c3354147cf | 152 | std::sort(keyspressed.begin(), keyspressed.end()); |
anevil14 | 0:34c3354147cf | 153 | return keyspressed; |
anevil14 | 0:34c3354147cf | 154 | } |