Optimized polling keybolard reading
Keypad3x4polling.cpp@0:7082c7132e50, 2015-05-12 (annotated)
- Committer:
- fangoman91
- Date:
- Tue May 12 14:50:28 2015 +0000
- Revision:
- 0:7082c7132e50
Optimized Keyboard (3x4) polling based reading
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fangoman91 | 0:7082c7132e50 | 1 | #include "mbed.h" |
fangoman91 | 0:7082c7132e50 | 2 | #include "Keypad3x4polling.h" |
fangoman91 | 0:7082c7132e50 | 3 | |
fangoman91 | 0:7082c7132e50 | 4 | using namespace mbed; |
fangoman91 | 0:7082c7132e50 | 5 | |
fangoman91 | 0:7082c7132e50 | 6 | Keypad::Keypad(PinName col1,PinName col2,PinName col3,PinName row1,PinName row2,PinName row3,PinName row4):_cols(col1,col2,col3),_rows(row1,row2,row3,row4) |
fangoman91 | 0:7082c7132e50 | 7 | { |
fangoman91 | 0:7082c7132e50 | 8 | _cols.mode(PullUp); |
fangoman91 | 0:7082c7132e50 | 9 | _rows.write(0); |
fangoman91 | 0:7082c7132e50 | 10 | } |
fangoman91 | 0:7082c7132e50 | 11 | char Keypad::read() |
fangoman91 | 0:7082c7132e50 | 12 | { |
fangoman91 | 0:7082c7132e50 | 13 | char key = 10; |
fangoman91 | 0:7082c7132e50 | 14 | _rows.write(14);//1110b |
fangoman91 | 0:7082c7132e50 | 15 | switch(_cols) |
fangoman91 | 0:7082c7132e50 | 16 | { |
fangoman91 | 0:7082c7132e50 | 17 | case 3: key = '3'; break;//011b |
fangoman91 | 0:7082c7132e50 | 18 | case 5: key = '2'; break;//101b |
fangoman91 | 0:7082c7132e50 | 19 | case 6: key = '1'; break;//110b |
fangoman91 | 0:7082c7132e50 | 20 | } |
fangoman91 | 0:7082c7132e50 | 21 | _rows.write(13);//1101b |
fangoman91 | 0:7082c7132e50 | 22 | switch(_cols) |
fangoman91 | 0:7082c7132e50 | 23 | { |
fangoman91 | 0:7082c7132e50 | 24 | case 3: key = '6'; break; |
fangoman91 | 0:7082c7132e50 | 25 | case 5: key = '5'; break; |
fangoman91 | 0:7082c7132e50 | 26 | case 6: key = '4'; break; |
fangoman91 | 0:7082c7132e50 | 27 | } |
fangoman91 | 0:7082c7132e50 | 28 | _rows.write(11);//1011b |
fangoman91 | 0:7082c7132e50 | 29 | switch(_cols) |
fangoman91 | 0:7082c7132e50 | 30 | { |
fangoman91 | 0:7082c7132e50 | 31 | case 3: key = '9'; break; |
fangoman91 | 0:7082c7132e50 | 32 | case 5: key = '8'; break; |
fangoman91 | 0:7082c7132e50 | 33 | case 6: key = '7'; break; |
fangoman91 | 0:7082c7132e50 | 34 | } |
fangoman91 | 0:7082c7132e50 | 35 | _rows.write(7);//0111b |
fangoman91 | 0:7082c7132e50 | 36 | switch(_cols) |
fangoman91 | 0:7082c7132e50 | 37 | { |
fangoman91 | 0:7082c7132e50 | 38 | case 3: key = '#'; break; |
fangoman91 | 0:7082c7132e50 | 39 | case 5: key = '0'; break; |
fangoman91 | 0:7082c7132e50 | 40 | case 6: key = '*'; break; |
fangoman91 | 0:7082c7132e50 | 41 | } |
fangoman91 | 0:7082c7132e50 | 42 | return key; |
fangoman91 | 0:7082c7132e50 | 43 | } |