|
|
|
|
|
|
|
|
*/ |
|
|
*/ |
|
|
void Scanner_ShiftRegsPISOMultiRow::begin() |
|
|
void Scanner_ShiftRegsPISOMultiRow::begin() |
|
|
{ |
|
|
{ |
|
|
SPI.begin(); |
|
|
|
|
|
|
|
|
SPI.begin(); //todo move this to constructor or init() |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/* scan() strobes the row's strobePin and returns state of the shift register's input pins. |
|
|
/* scan() strobes the row's strobePin and returns state of the shift register's input pins. |
|
|
|
|
|
|
|
|
{ |
|
|
{ |
|
|
read_pins_t readState = 0; //bits, 1 means key is pressed, 0 means released |
|
|
read_pins_t readState = 0; //bits, 1 means key is pressed, 0 means released |
|
|
|
|
|
|
|
|
//SPI.beginTransaction( SPISettings(5000000, MSBFIRST, SPI_MODE0) ); //control SPI bus, 5 MHz |
|
|
|
|
|
|
|
|
SPI.beginTransaction( SPISettings(5000000, MSBFIRST, SPI_MODE0) ); //control SPI bus, 5 MHz |
|
|
|
|
|
|
|
|
digitalWrite(slaveSelect, LOW); //load parallel inputs to registers |
|
|
digitalWrite(slaveSelect, LOW); //load parallel inputs to registers |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SPI.transfer(&readState, byte_count); |
|
|
SPI.transfer(&readState, byte_count); |
|
|
|
|
|
|
|
|
//SPI.endTransaction(); |
|
|
|
|
|
|
|
|
SPI.endTransaction(); |
|
|
|
|
|
|
|
|
return readState; |
|
|
return readState; |
|
|
} |
|
|
} |