Optimized polling keybolard reading

Dependents:   design_project

Keypad3x4polling.cpp

Committer:
fangoman91
Date:
2015-05-12
Revision:
0:7082c7132e50

File content as of revision 0:7082c7132e50:

#include "mbed.h"
#include "Keypad3x4polling.h"

using namespace mbed;

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)   
{ 
    _cols.mode(PullUp);
    _rows.write(0);     
}
char Keypad::read()
{
    char key = 10;
    _rows.write(14);//1110b
    switch(_cols)
    {
        case 3: key = '3'; break;//011b
        case 5: key = '2'; break;//101b
        case 6: key = '1'; break;//110b
    }
    _rows.write(13);//1101b
    switch(_cols)
    {
        case 3: key = '6'; break;
        case 5: key = '5'; break;
        case 6: key = '4'; break;
    }
    _rows.write(11);//1011b
    switch(_cols)
    {
        case 3: key = '9'; break;
        case 5: key = '8'; break;
        case 6: key = '7'; break;
    }
    _rows.write(7);//0111b
    switch(_cols)
    {
        case 3: key = '#'; break;
        case 5: key = '0'; break;
        case 6: key = '*'; break;
    }
    return key;
}