1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #include "ColPort_MCP23018.h"
-
- /*
- configures column port's IODIR, GPIO, and GPPU.
- */
- ColPort_MCP23018::ColPort_MCP23018(IOExpanderPort& port, const uint8_t colPins)
- : ColPort(colPins), port(port), IODIR(port.num), GPIO(port.num + 0x12), GPPU(port.num + 0x0C)
- {}
-
- void ColPort_MCP23018::begin()
- {
- //Wire.begin() should only be called once https://www.arduino.cc/en/Reference/WireBegin
- #ifndef WIRE_BEGIN
- #define WIRE_BEGIN
- Wire.begin();
- #endif
-
- Wire.beginTransmission(port.ADDR);
- Wire.write(IODIR);
- Wire.write(colPins); //0=configure as output (for LED), 1=configure as input (for read)
- Wire.endTransmission();
-
- Wire.beginTransmission(port.ADDR);
- Wire.write(GPPU);
- Wire.write(colPins); //0=pull-up disabled (for LED), 1=pull-up enabled (for read)
- Wire.endTransmission();
- }
-
- /*
- Saves all port-pin values to portState.
- */
- void ColPort_MCP23018::read()
- {
- Wire.beginTransmission(port.ADDR);
- Wire.write(GPIO); //GPIO immediately before requestFrom
- Wire.endTransmission();
-
- Wire.requestFrom(port.ADDR, 1u); //request one byte from input port
-
- portState = Wire.read();
- }
|