Keypad that has 12 keys for input

Dependents:   Input_Keypad MARISOL Final_Project

Committer:
anevil14
Date:
Thu Mar 12 17:45:35 2015 +0000
Revision:
2:795c6863bbc2
Parent:
0:34c3354147cf
12 Input Keypad from Sparkfun

Who changed what in which revision?

UserRevisionLine numberNew 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 }