38 lines
867 B
C++
38 lines
867 B
C++
|
#include "Scanner_IOE.h"
|
||
|
|
||
|
/* Row constructor calls every Scanner's init().
|
||
|
*/
|
||
|
void Scanner_IOE::init(const uint8_t strobePin)
|
||
|
{
|
||
|
//emty function
|
||
|
}
|
||
|
|
||
|
/* begin() should be called once from sketch setup().
|
||
|
*/
|
||
|
void Scanner_IOE::begin()
|
||
|
{
|
||
|
Wire.begin();
|
||
|
refPortWrite.begin();
|
||
|
refPortRead.begin();
|
||
|
}
|
||
|
|
||
|
/* scan() strobes the row's strobePin and retuns state of port's input pins.
|
||
|
Bitwise variables are 1 bit per key.
|
||
|
*/
|
||
|
uint8_t Scanner_IOE::scan(const uint8_t strobePin)
|
||
|
{
|
||
|
uint8_t readState; //bitwise, 1 means key is pressed, 0 means released
|
||
|
|
||
|
//strobe on
|
||
|
refPortWrite.write(strobePin, strobeOn);
|
||
|
delayMicroseconds(3); //time to stabilize voltage
|
||
|
|
||
|
//read the port pins
|
||
|
readState = refPortRead.read();
|
||
|
|
||
|
//strobe off
|
||
|
refPortWrite.write(strobePin, strobeOff);
|
||
|
|
||
|
return readState;
|
||
|
}
|