17template <
class WireType>
95 template <
class... Args>
101#include "MCP23017.ipp"
#define BEGIN_AH_NAMESPACE
AH::function_traits< decltype(::pinMode)>::argument_t< 1 > PinMode_t
AH::function_traits< decltype(::digitalWrite)>::argument_t< 1 > PinStatus_t
A class for arrays of bits.
pin_t pin(pin_int_t pin) const
Class for MCP23017 I²C I/O expanders.
MCP23017(WireType &wire, uint8_t addressOffset=0, pin_t interruptPin=NO_PIN)
Constructor.
void updateBufferedPinModes()
Send the new pin modes to the chip after calling pinModeBuffered.
pin_t pinB(pin_int_t p)
Get the identifier of the given pin in register B.
void updateBufferedOutputs() override
Write the internal state to the physical outputs.
BitArray< 16 > bufferedPullups
pin_t pinA(pin_int_t p)
Get the identifier of the given pin in register A.
PinStatus_t digitalReadBuffered(pin_int_t pin) override
Read the state of the given pin from the software buffer.
void digitalWriteBuffered(pin_int_t pin, PinStatus_t status) override
Set the output of a given pin in the software buffer.
BitArray< 16 > bufferedInputs
void updateBufferedInputs() override
Read the physical state into the input buffers.
void begin() override
Initialize the extended IO element.
static constexpr uint8_t I2C_BASE_ADDRESS
BitArray< 16 > bufferedOutputs
void analogWriteBuffered(pin_int_t, analog_t) override
Write an analog (or PWM) value to the software buffer given pin.
bool hasInputs() const
Check if any of the pins are configured as inputs.
void writeI2C(uint8_t addr, Args... values)
Write any data to the MCP23017.
BitArray< 16 > bufferedPinModes
analog_t analogReadBuffered(pin_int_t pin) override
Read the analog value of the given pin from the software buffer.
void pinModeBuffered(pin_int_t pin, PinMode_t mode) override
Set the mode of a given pin in the software buffer.
void writeI2C(const uint8_t(&values)[N])
Write any data to the MCP23017.
StaticSizeExtendedIOElement()
uint16_t analog_t
The type returned from analogRead and similar functions.
constexpr pin_t NO_PIN
A special pin number that indicates an unused or invalid pin.
uint_fast16_t pin_int_t
Integer type used internally to store the index of (extended) GPIO pins.
Type for storing pin numbers of Extended Input/Output elements.