GY-63_MS5611/libraries/MCP23017_RT
2021-09-17 10:30:51 +02:00
..
.github/workflows 0.2.4 MCP23017_RT 2021-09-17 10:30:51 +02:00
examples 2021-01-29 2021-01-29 12:31:58 +01:00
test 0.2.3 MCP23017_RT 2021-06-06 19:58:43 +02:00
.arduino-ci.yml 2021-01-29 2021-01-29 12:31:58 +01:00
library.json 0.2.4 MCP23017_RT 2021-09-17 10:30:51 +02:00
library.properties 0.2.4 MCP23017_RT 2021-09-17 10:30:51 +02:00
LICENSE 2021-01-29 2021-01-29 12:31:58 +01:00
MCP23017.cpp 0.2.4 MCP23017_RT 2021-09-17 10:30:51 +02:00
MCP23017.h 0.2.4 MCP23017_RT 2021-09-17 10:30:51 +02:00
README.md 0.2.4 MCP23017_RT 2021-09-17 10:30:51 +02:00

Arduino CI Arduino-lint JSON check License: MIT GitHub release

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