A keypad library used in one of my projects.
Keypad.cpp@1:b9458512717a, 2021-05-03 (annotated)
- Committer:
- tgrgic1
- Date:
- Mon May 03 22:17:39 2021 +0000
- Revision:
- 1:b9458512717a
- Parent:
- 0:1ae25267abc0
2
Who changed what in which revision?
User | Revision | Line number | New 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 | } |