A keypad library used in one of my projects.

Committer:
tgrgic1
Date:
Mon May 03 22:17:39 2021 +0000
Revision:
1:b9458512717a
Parent:
0:1ae25267abc0
2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tgrgic1 0:1ae25267abc0 1 #include "Keypad.h"
tgrgic1 0:1ae25267abc0 2 #include "mbed.h"
tgrgic1 0:1ae25267abc0 3
tgrgic1 0:1ae25267abc0 4 Keypad::Keypad(PinName row1, PinName row2, PinName row3, PinName row4,PinName col1, PinName col2, PinName col3, PinName col4)
tgrgic1 0:1ae25267abc0 5 : _col(col1,col2,col3,col4), _row(row1,row2,row3,row4){}
tgrgic1 0:1ae25267abc0 6
tgrgic1 0:1ae25267abc0 7 Timer t;
tgrgic1 1:b9458512717a 8
tgrgic1 1:b9458512717a 9 int x,y;
tgrgic1 1:b9458512717a 10 char keypad_matrica[4][4] = {{'1','2','3'},
tgrgic1 1:b9458512717a 11 {'4','5','6'},
tgrgic1 1:b9458512717a 12 {'7','8','9'},
tgrgic1 1:b9458512717a 13 {'a','0','b'}};
tgrgic1 1:b9458512717a 14
tgrgic1 0:1ae25267abc0 15
tgrgic1 0:1ae25267abc0 16 void Keypad::visokoStanje()
tgrgic1 0:1ae25267abc0 17 {
tgrgic1 0:1ae25267abc0 18 _col = 0b1111;
tgrgic1 0:1ae25267abc0 19 }
tgrgic1 0:1ae25267abc0 20
tgrgic1 0:1ae25267abc0 21 void Keypad::prviStupac()
tgrgic1 0:1ae25267abc0 22 {
tgrgic1 0:1ae25267abc0 23 _col = 0b1110;
tgrgic1 0:1ae25267abc0 24 }
tgrgic1 0:1ae25267abc0 25
tgrgic1 0:1ae25267abc0 26 void Keypad::drugiStupac()
tgrgic1 0:1ae25267abc0 27 {
tgrgic1 0:1ae25267abc0 28 _col = 0b1101;
tgrgic1 0:1ae25267abc0 29 }
tgrgic1 0:1ae25267abc0 30
tgrgic1 0:1ae25267abc0 31 void Keypad::treciStupac()
tgrgic1 0:1ae25267abc0 32 {
tgrgic1 0:1ae25267abc0 33 _col = 0b1011;
tgrgic1 0:1ae25267abc0 34 }
tgrgic1 0:1ae25267abc0 35
tgrgic1 0:1ae25267abc0 36 void Keypad::cetvrtiStupac()
tgrgic1 0:1ae25267abc0 37 {
tgrgic1 0:1ae25267abc0 38 _col = 0b0111;
tgrgic1 0:1ae25267abc0 39 }
tgrgic1 0:1ae25267abc0 40
tgrgic1 1:b9458512717a 41 void Keypad::colActivate(int state){
tgrgic1 1:b9458512717a 42 switch(state){
tgrgic1 1:b9458512717a 43 case 0:
tgrgic1 1:b9458512717a 44 prviStupac();
tgrgic1 1:b9458512717a 45 break;
tgrgic1 1:b9458512717a 46
tgrgic1 1:b9458512717a 47 case 1:
tgrgic1 1:b9458512717a 48 drugiStupac();
tgrgic1 1:b9458512717a 49 break;
tgrgic1 1:b9458512717a 50
tgrgic1 1:b9458512717a 51 case 2:
tgrgic1 1:b9458512717a 52 treciStupac();
tgrgic1 1:b9458512717a 53 break;
tgrgic1 1:b9458512717a 54 }
tgrgic1 1:b9458512717a 55 }
tgrgic1 1:b9458512717a 56
tgrgic1 1:b9458512717a 57 char Keypad::keyscan()
tgrgic1 0:1ae25267abc0 58 {
tgrgic1 0:1ae25267abc0 59 t.stop();
tgrgic1 0:1ae25267abc0 60 t.reset();
tgrgic1 0:1ae25267abc0 61 char out = 'a';
tgrgic1 0:1ae25267abc0 62 bool state = true;
tgrgic1 0:1ae25267abc0 63 visokoStanje();
tgrgic1 0:1ae25267abc0 64 wait_ms(5);
tgrgic1 0:1ae25267abc0 65 t.start();
tgrgic1 0:1ae25267abc0 66
tgrgic1 0:1ae25267abc0 67 while(state == true && t.read()<30) {
tgrgic1 1:b9458512717a 68
tgrgic1 1:b9458512717a 69 for(x = 0; x <4; x++){
tgrgic1 1:b9458512717a 70 colActivate(x);
tgrgic1 0:1ae25267abc0 71 wait_ms(5);
tgrgic1 0:1ae25267abc0 72 if(_row == 0b1110) {
tgrgic1 1:b9458512717a 73 y = 0;
tgrgic1 0:1ae25267abc0 74 state = false;
tgrgic1 0:1ae25267abc0 75 } else if (_row == 0b1101) {
tgrgic1 1:b9458512717a 76 y = 1;
tgrgic1 0:1ae25267abc0 77 state = false;
tgrgic1 0:1ae25267abc0 78 } else if (_row == 0b1011) {
tgrgic1 1:b9458512717a 79 y = 2;
tgrgic1 0:1ae25267abc0 80 state = false;
tgrgic1 0:1ae25267abc0 81 } else if (_row == 0b0111) {
tgrgic1 1:b9458512717a 82 y = 3;
tgrgic1 0:1ae25267abc0 83 state = false;
tgrgic1 0:1ae25267abc0 84 }
tgrgic1 0:1ae25267abc0 85 }
tgrgic1 1:b9458512717a 86
tgrgic1 1:b9458512717a 87 }
tgrgic1 1:b9458512717a 88 out = keypad_matrica[x][y];
tgrgic1 0:1ae25267abc0 89
tgrgic1 1:b9458512717a 90 if(t.read()> 30){
tgrgic1 0:1ae25267abc0 91 t.stop();
tgrgic1 0:1ae25267abc0 92 t.reset();
tgrgic1 0:1ae25267abc0 93 out ='c';
tgrgic1 0:1ae25267abc0 94 return out;
tgrgic1 0:1ae25267abc0 95 }
tgrgic1 0:1ae25267abc0 96
tgrgic1 0:1ae25267abc0 97 visokoStanje();
tgrgic1 0:1ae25267abc0 98 return out;
tgrgic1 0:1ae25267abc0 99 }