ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
mcp23016.h
Go to the documentation of this file.
1#pragma once
2
4#include "esphome/core/hal.h"
8
9namespace esphome::mcp23016 {
10
27
28class MCP23016 final : public gpio_expander::CachedGpioExpanderComponent<uint16_t, 16>, public i2c::I2CDevice {
29 public:
30 MCP23016() = default;
31
32 void setup() override;
33 void pin_mode(uint8_t pin, gpio::Flags flags);
34
35 protected:
36 // Virtual methods from CachedGpioExpander
37 bool digital_read_hw(uint8_t pin) override;
38 bool digital_read_cache(uint8_t pin) override;
39 void digital_write_hw(uint8_t pin, bool value) override;
40
41 // read a given register
42 bool read_reg_(uint8_t reg, uint16_t *value);
43 // write a value to a given register
44 bool write_reg_(uint8_t reg, uint16_t value);
45 // update registers with given pin value.
46 void update_reg_(uint8_t pin, bool pin_value, uint8_t reg_a);
47
48 uint16_t olat_{0x0000};
49 // Cache for input values (16-bit combined for both banks)
50 uint16_t input_mask_{0x0000};
51};
52
54
55} // namespace esphome::mcp23016
56
Base for expanders that cache reads per loop. With an interrupt pin the cache stays valid until INT f...
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:144
I2CRegister reg(uint8_t a_register)
calls the I2CRegister constructor
Definition i2c.h:164
void pin_mode(uint8_t pin, gpio::Flags flags)
Definition mcp23016.cpp:35
bool digital_read_cache(uint8_t pin) override
Definition mcp23016.cpp:33
void digital_write_hw(uint8_t pin, bool value) override
Definition mcp23016.cpp:34
bool digital_read_hw(uint8_t pin) override
Definition mcp23016.cpp:31
void update_reg_(uint8_t pin, bool pin_value, uint8_t reg_a)
Definition mcp23016.cpp:55
bool read_reg_(uint8_t reg, uint16_t *value)
Definition mcp23016.cpp:43
bool write_reg_(uint8_t reg, uint16_t value)
Definition mcp23016.cpp:49
uint16_t flags
ESPHOME_EXPANDER_PIN_SUMMARY_DECL(esphome::mcp23016::MCP23016)