#ifndef ROWPORT_MCP23018_H #define ROWPORT_MCP23018_H #include #include #include #include #include "IOExpanderPort.h" /* One MCP23018 I/O expander port connected to matrix rows. begin() configures column port's IODIR, GPIO. This should normally be called only once. Instantiation ------------ Example instantiation for row port A: IOExpanderPort portA(0, ~0); RowPort_MCP23018 rowPortA(portA); Example instantiation for row port B: IOExpanderPort portB(1, ~0); RowPort_MCP23018 rowPortB(portB); Diode orientation ---------------- Rows, columns, and diode orientation are explained in Matrix.h MCP23018 data sheet ------------------ http://ww1.microchip.com/downloads/en/DeviceDoc/22103a.pdf */ class RowPort_MCP23018 : public RowPort { private: IOExpanderPort& port; const uint8_t IODIR; //Input/Ouput Direction register address const uint8_t GPIO; //General Purpose Input/Ouput register address public: //The constructor initialization list is in .cpp RowPort_MCP23018(IOExpanderPort& port); void begin(); virtual void setActivePinLow(const uint8_t activePin); //activePin is a port mask virtual void setActivePinHigh(const uint8_t activePin); }; #endif