uint8_t ReadPort::getPortState() | uint8_t ReadPort::getPortState() | ||||
{ | { | ||||
//todo Keyboard.print(" portState="); | |||||
//Keyboard.print(portState); | |||||
return portState; | return portState; | ||||
} | } |
{ | { | ||||
//these variables are all bitwise, one bit per key | //these variables are all bitwise, one bit per key | ||||
read_pins_t rowState; //1 means pressed, 0 means released | read_pins_t rowState; //1 means pressed, 0 means released | ||||
//uint8_t readPinCount; | |||||
read_pins_t debouncedChanged; //1 means debounced changed | read_pins_t debouncedChanged; //1 means debounced changed | ||||
rowState = scanner.scan(); | rowState = scanner.scan(); |
{ | { | ||||
//these variables are all bitwise, one bit per key | //these variables are all bitwise, one bit per key | ||||
read_pins_t rowState; //1 means pressed, 0 means released | read_pins_t rowState; //1 means pressed, 0 means released | ||||
//uint8_t readPinCount; | |||||
read_pins_t debouncedChanged; //1 means debounced changed | read_pins_t debouncedChanged; //1 means debounced changed | ||||
rowState = scanner.scan(); | rowState = scanner.scan(); |
public: | public: | ||||
Row_uC(const uint8_t strobePin, const uint8_t READ_PINS[], const uint8_t READ_PIN_COUNT, | Row_uC(const uint8_t strobePin, const uint8_t READ_PINS[], const uint8_t READ_PIN_COUNT, | ||||
Key *const ptrsKeys[]) | Key *const ptrsKeys[]) | ||||
: Row(ptrsKeys), scanner(strobePin, READ_PINS, READ_PIN_COUNT), READ_PIN_COUNT(READ_PIN_COUNT) { } | |||||
: Row(ptrsKeys), scanner(strobePin, READ_PINS, READ_PIN_COUNT), | |||||
READ_PIN_COUNT(READ_PIN_COUNT) { } | |||||
void process(); | void process(); | ||||
}; | }; | ||||
#endif | #endif |
class Scanner_Port | class Scanner_Port | ||||
{ | { | ||||
private: | private: | ||||
static const bool STROBE_ON; //HIGH or LOW logic level of strobe on, active state | |||||
StrobePort& refStrobePort; //this row's IC port | StrobePort& refStrobePort; //this row's IC port | ||||
const uint8_t strobePin; //bitwise, 1 indicates IC pin connected to this row | const uint8_t strobePin; //bitwise, 1 indicates IC pin connected to this row | ||||
ReadPort& refReadPort; | ReadPort& refReadPort; | ||||
public: | public: | ||||
Scanner_Port(StrobePort &refStrobePort, const uint8_t strobePin, | |||||
ReadPort& refReadPort) | |||||
: refStrobePort(refStrobePort), strobePin(strobePin), | |||||
refReadPort(refReadPort) {} | |||||
static const bool STROBE_ON; //logic level of strobe on, active state, HIGH or LOW | |||||
Scanner_Port(StrobePort &refStrobePort, const uint8_t strobePin, ReadPort& refReadPort) | |||||
: refStrobePort(refStrobePort), strobePin(strobePin), refReadPort(refReadPort) {} | |||||
virtual ReadPort* const scan(); | virtual ReadPort* const scan(); | ||||
}; | }; | ||||
#endif | #endif |
static const bool STROBE_OFF; //logic level of strobe off, complement of active state | static const bool STROBE_OFF; //logic level of strobe off, complement of active state | ||||
const uint8_t STROBE_PIN; //Arduino pin number connected to this row | const uint8_t STROBE_PIN; //Arduino pin number connected to this row | ||||
const uint8_t BYTE_COUNT; //number of bytes to read from shift registers | const uint8_t BYTE_COUNT; //number of bytes to read from shift registers | ||||
//uint8_t READ_PIN_COUNT; | |||||
public: | public: | ||||
Scanner_ShiftRegs74HC165(const uint8_t STROBE_PIN, uint8_t READ_PIN_COUNT); | Scanner_ShiftRegs74HC165(const uint8_t STROBE_PIN, uint8_t READ_PIN_COUNT); | ||||
virtual read_pins_t scan(); | virtual read_pins_t scan(); |
For Scanner_ShiftRegs74HC165, Scanner_ShiftRegs74HC165::READ_PIN_COUNT | For Scanner_ShiftRegs74HC165, Scanner_ShiftRegs74HC165::READ_PIN_COUNT | ||||
For Scanner_Port, cover the last 1 bit in Scanner_Port::strobePin | For Scanner_Port, cover the last 1 bit in Scanner_Port::strobePin | ||||
*/ | */ | ||||
//typedef uint8_t read_pins_t; | |||||
typedef uint8_t read_pins_t; | |||||
//typedef uint16_t read_pins_t; | //typedef uint16_t read_pins_t; | ||||
typedef uint32_t read_pins_t; | |||||
//typedef uint32_t read_pins_t; | |||||
/* SAMPLE_COUNT = 4 is very reliable for a keyboard. | /* SAMPLE_COUNT = 4 is very reliable for a keyboard. | ||||
Split keyboards with a long connecting wire or in environment with | Split keyboards with a long connecting wire or in environment with |