mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
.. | ||
.github/workflows | ||
examples | ||
test | ||
.arduino-ci.yml | ||
library.json | ||
library.properties | ||
LICENSE | ||
MCP23017.cpp | ||
MCP23017.h | ||
README.md |
MCP23017_RT
Arduino library for MCP23017 16 channel I2C port expander.
Description
This library gives easy control over the 16 pins of a MCP23017 chip.
Interface
Constructor
- MCP23017(address, TwoWire *wire = &Wire) constructor, with default Wire interface.
Can be overruled with Wire0..WireN. - bool begin() for UNO, returns true if successful.
- bool begin(sda, scl) for ESP32, returns true if successful.
- bool isConnected() returns true if connected, false otherwise.
Single pin interface
- bool pinMode(pin, value) pin = 0..15, value = INPUT, OUTPUT, returns true if successful.
- bool digitalWrite(pin, value) pin = 0..15, value = LOW(0) HIGH (!0), returns true if successful.
- uint8_t digitalRead(pin) pin = 0..15, returns LOW or HIGH, might set the lastError();
- bool setPolarity(uint8_t pin, bool reversed) pin = 0..15, set reversed flag, returns true if successful.
- bool getPolarity(uint8_t pin, bool &reversed) pin = 0..15, reads reversed flag, returns true if successful.
- bool setPullup(uint8_t pin, bool pullup) pin = 0..15, set pullup flag, returns true if successful.
- bool getPullup(uint8_t pin, bool &pullup) pin = 0..15, reads pullup flag, returns true if successful.
8 pins interface
- bool pinMode8(port, value) port = 0..1, value = 0..255, returns true if successful.
- bool write8(port, value) port = 0..1, value = 0..255, returns true if successful.
- uint8_t read8(port) port = 0..1, reads 8 pins into one byte.
- bool setPolarity8(uint8_t port, uint8_t mask) port = 0..1, sets polarity for 8 channels at once.
- bool getPolarity8(uint8_t port, uint8_t &mask) port = 0..1, reads polarity of 8 channels at once.
- bool setPullup8(uint8_t port, uint8_t mask) port = 0..1,, sets pullup for 8 channels at once.
- bool getPullup8(uint8_t port, uint8_t &mask) port = 0..1, reads pullup for 8 channels at once.
Error codes
- int lastError() Above functions set an error flag that can be read with this function.
Reading it will reset the flag to MCP23017_OK.
DESCRIPTION | VALUE |
---|---|
MCP23017_OK | 0x00 |
MCP23017_PIN_ERROR | 0x81 |
MCP23017_I2C_ERROR | 0x82 |
MCP23017_VALUE_ERROR | 0x83 |
MCP23017_PORT_ERROR | 0x84 |
Future
Must
- Improve and extend documentation
- add pinMode16(), write16() and read16()
- add examples
Should
- extend error codes
- optimize code - squeeze footprint
- optimize code - do not write if pin does not chance (~25%)
Could
- initial value (16 bit?) as begin parameter (breaking change)
- depends on input output pullup etc?
- investigate auto address increment?
Operation
See examples