Optimized polling keybolard reading

Dependents:   design_project

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?

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