Optimized polling keybolard reading

Dependents:   design_project

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Keypad3x4polling.cpp Source File

Keypad3x4polling.cpp

00001 #include "mbed.h"
00002 #include "Keypad3x4polling.h"
00003 
00004 using namespace mbed;
00005 
00006 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)   
00007 { 
00008     _cols.mode(PullUp);
00009     _rows.write(0);     
00010 }
00011 char Keypad::read()
00012 {
00013     char key = 10;
00014     _rows.write(14);//1110b
00015     switch(_cols)
00016     {
00017         case 3: key = '3'; break;//011b
00018         case 5: key = '2'; break;//101b
00019         case 6: key = '1'; break;//110b
00020     }
00021     _rows.write(13);//1101b
00022     switch(_cols)
00023     {
00024         case 3: key = '6'; break;
00025         case 5: key = '5'; break;
00026         case 6: key = '4'; break;
00027     }
00028     _rows.write(11);//1011b
00029     switch(_cols)
00030     {
00031         case 3: key = '9'; break;
00032         case 5: key = '8'; break;
00033         case 6: key = '7'; break;
00034     }
00035     _rows.write(7);//0111b
00036     switch(_cols)
00037     {
00038         case 3: key = '#'; break;
00039         case 5: key = '0'; break;
00040         case 6: key = '*'; break;
00041     }
00042     return key;
00043 }