A keypad library used in one of my projects.
Keypad.cpp@0:1ae25267abc0, 2021-05-03 (annotated)
- Committer:
- tgrgic1
- Date:
- Mon May 03 21:40:24 2021 +0000
- Revision:
- 0:1ae25267abc0
- Child:
- 1:b9458512717a
Moja keypad biblioteka
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 | 0:1ae25267abc0 | 8 | |
tgrgic1 | 0:1ae25267abc0 | 9 | void Keypad::visokoStanje() |
tgrgic1 | 0:1ae25267abc0 | 10 | { |
tgrgic1 | 0:1ae25267abc0 | 11 | _col = 0b1111; |
tgrgic1 | 0:1ae25267abc0 | 12 | } |
tgrgic1 | 0:1ae25267abc0 | 13 | |
tgrgic1 | 0:1ae25267abc0 | 14 | void Keypad::prviStupac() |
tgrgic1 | 0:1ae25267abc0 | 15 | { |
tgrgic1 | 0:1ae25267abc0 | 16 | _col = 0b1110; |
tgrgic1 | 0:1ae25267abc0 | 17 | } |
tgrgic1 | 0:1ae25267abc0 | 18 | |
tgrgic1 | 0:1ae25267abc0 | 19 | void Keypad::drugiStupac() |
tgrgic1 | 0:1ae25267abc0 | 20 | { |
tgrgic1 | 0:1ae25267abc0 | 21 | _col = 0b1101; |
tgrgic1 | 0:1ae25267abc0 | 22 | } |
tgrgic1 | 0:1ae25267abc0 | 23 | |
tgrgic1 | 0:1ae25267abc0 | 24 | void Keypad::treciStupac() |
tgrgic1 | 0:1ae25267abc0 | 25 | { |
tgrgic1 | 0:1ae25267abc0 | 26 | _col = 0b1011; |
tgrgic1 | 0:1ae25267abc0 | 27 | } |
tgrgic1 | 0:1ae25267abc0 | 28 | |
tgrgic1 | 0:1ae25267abc0 | 29 | void Keypad::cetvrtiStupac() |
tgrgic1 | 0:1ae25267abc0 | 30 | { |
tgrgic1 | 0:1ae25267abc0 | 31 | _col = 0b0111; |
tgrgic1 | 0:1ae25267abc0 | 32 | } |
tgrgic1 | 0:1ae25267abc0 | 33 | |
tgrgic1 | 0:1ae25267abc0 | 34 | char Keypad::keyscan() |
tgrgic1 | 0:1ae25267abc0 | 35 | { |
tgrgic1 | 0:1ae25267abc0 | 36 | t.stop(); |
tgrgic1 | 0:1ae25267abc0 | 37 | t.reset(); |
tgrgic1 | 0:1ae25267abc0 | 38 | char out = 'a'; |
tgrgic1 | 0:1ae25267abc0 | 39 | bool state = true; |
tgrgic1 | 0:1ae25267abc0 | 40 | visokoStanje(); |
tgrgic1 | 0:1ae25267abc0 | 41 | wait_ms(5); |
tgrgic1 | 0:1ae25267abc0 | 42 | t.start(); |
tgrgic1 | 0:1ae25267abc0 | 43 | |
tgrgic1 | 0:1ae25267abc0 | 44 | while(state == true && t.read()<30) { |
tgrgic1 | 0:1ae25267abc0 | 45 | prviStupac(); |
tgrgic1 | 0:1ae25267abc0 | 46 | wait_ms(5); |
tgrgic1 | 0:1ae25267abc0 | 47 | if(_row == 0b1110) { |
tgrgic1 | 0:1ae25267abc0 | 48 | out = '1'; |
tgrgic1 | 0:1ae25267abc0 | 49 | state = false; |
tgrgic1 | 0:1ae25267abc0 | 50 | } else if (_row == 0b1101) { |
tgrgic1 | 0:1ae25267abc0 | 51 | out = '4'; |
tgrgic1 | 0:1ae25267abc0 | 52 | state = false; |
tgrgic1 | 0:1ae25267abc0 | 53 | } else if (_row == 0b1011) { |
tgrgic1 | 0:1ae25267abc0 | 54 | out = '7'; |
tgrgic1 | 0:1ae25267abc0 | 55 | state = false; |
tgrgic1 | 0:1ae25267abc0 | 56 | } else if (_row == 0b0111) { |
tgrgic1 | 0:1ae25267abc0 | 57 | out = 'b'; |
tgrgic1 | 0:1ae25267abc0 | 58 | state = false; |
tgrgic1 | 0:1ae25267abc0 | 59 | } |
tgrgic1 | 0:1ae25267abc0 | 60 | |
tgrgic1 | 0:1ae25267abc0 | 61 | drugiStupac(); |
tgrgic1 | 0:1ae25267abc0 | 62 | wait_ms(5); |
tgrgic1 | 0:1ae25267abc0 | 63 | if(_row == 0b1110) { |
tgrgic1 | 0:1ae25267abc0 | 64 | out = '2'; |
tgrgic1 | 0:1ae25267abc0 | 65 | state = false; |
tgrgic1 | 0:1ae25267abc0 | 66 | } else if (_row == 0b1101) { |
tgrgic1 | 0:1ae25267abc0 | 67 | out = '5'; |
tgrgic1 | 0:1ae25267abc0 | 68 | state = false; |
tgrgic1 | 0:1ae25267abc0 | 69 | } else if (_row == 0b1011) { |
tgrgic1 | 0:1ae25267abc0 | 70 | out = '8'; |
tgrgic1 | 0:1ae25267abc0 | 71 | state = false; |
tgrgic1 | 0:1ae25267abc0 | 72 | } else if (_row == 0b0111) { |
tgrgic1 | 0:1ae25267abc0 | 73 | out = '0'; |
tgrgic1 | 0:1ae25267abc0 | 74 | state = false; |
tgrgic1 | 0:1ae25267abc0 | 75 | } |
tgrgic1 | 0:1ae25267abc0 | 76 | |
tgrgic1 | 0:1ae25267abc0 | 77 | treciStupac(); |
tgrgic1 | 0:1ae25267abc0 | 78 | wait_ms(5); |
tgrgic1 | 0:1ae25267abc0 | 79 | if(_row == 0b1110) { |
tgrgic1 | 0:1ae25267abc0 | 80 | out = '3'; |
tgrgic1 | 0:1ae25267abc0 | 81 | state = false; |
tgrgic1 | 0:1ae25267abc0 | 82 | } else if (_row == 0b1101) { |
tgrgic1 | 0:1ae25267abc0 | 83 | out = '6'; |
tgrgic1 | 0:1ae25267abc0 | 84 | state = false; |
tgrgic1 | 0:1ae25267abc0 | 85 | } else if (_row == 0b1011) { |
tgrgic1 | 0:1ae25267abc0 | 86 | out = '9'; |
tgrgic1 | 0:1ae25267abc0 | 87 | state = false; |
tgrgic1 | 0:1ae25267abc0 | 88 | } else if (_row == 0b0111) { |
tgrgic1 | 0:1ae25267abc0 | 89 | state = false; |
tgrgic1 | 0:1ae25267abc0 | 90 | return out; |
tgrgic1 | 0:1ae25267abc0 | 91 | } |
tgrgic1 | 0:1ae25267abc0 | 92 | } |
tgrgic1 | 0:1ae25267abc0 | 93 | |
tgrgic1 | 0:1ae25267abc0 | 94 | if(t.read()>=29){ |
tgrgic1 | 0:1ae25267abc0 | 95 | t.stop(); |
tgrgic1 | 0:1ae25267abc0 | 96 | t.reset(); |
tgrgic1 | 0:1ae25267abc0 | 97 | out ='c'; |
tgrgic1 | 0:1ae25267abc0 | 98 | return out; |
tgrgic1 | 0:1ae25267abc0 | 99 | } |
tgrgic1 | 0:1ae25267abc0 | 100 | |
tgrgic1 | 0:1ae25267abc0 | 101 | visokoStanje(); |
tgrgic1 | 0:1ae25267abc0 | 102 | return out; |
tgrgic1 | 0:1ae25267abc0 | 103 | } |
tgrgic1 | 0:1ae25267abc0 | 104 | |
tgrgic1 | 0:1ae25267abc0 | 105 |