ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
mpr121.h
Go to the documentation of this file.
1#pragma once
2
5#include "esphome/core/hal.h"
6
9
10#include <vector>
11
12namespace esphome::mpr121 {
13
14enum {
38 MPR121_ECR = 0x5E,
53};
54
56 public:
57 virtual void setup() = 0;
58 virtual void process(uint16_t data) = 0;
59};
60
61class MPR121Component final : public Component, public i2c::I2CDevice {
62 public:
63 void register_channel(MPR121Channel *channel) { this->channels_.push_back(channel); }
64 void set_touch_debounce(uint8_t debounce);
65 void set_release_debounce(uint8_t debounce);
66 void set_touch_threshold(uint8_t touch_threshold) { this->touch_threshold_ = touch_threshold; };
67 void set_release_threshold(uint8_t release_threshold) { this->release_threshold_ = release_threshold; };
68 uint8_t get_touch_threshold() const { return this->touch_threshold_; };
69 uint8_t get_release_threshold() const { return this->release_threshold_; };
70 void setup() override;
71 void dump_config() override;
72 float get_setup_priority() const override { return setup_priority::IO; }
73 void loop() override;
74
75 void set_max_touch_channel(uint8_t max_touch_channel) { this->max_touch_channel_ = max_touch_channel; }
76
77 // GPIO helper functions; `pin` is the electrode number, 4 to 11, of the shared GPIO pins.
78 bool digital_read(uint8_t pin);
79 void digital_write(uint8_t pin, bool value);
80 void pin_mode(uint8_t pin, gpio::Flags flags);
81
82 protected:
83 std::vector<MPR121Channel *> channels_{};
84 uint8_t debounce_{0};
88
89 bool flush_gpio_();
90
92 uint8_t gpio_enable_{0x00};
94 uint8_t gpio_direction_{0x00};
96 uint8_t gpio_output_{0x00};
98 uint8_t gpio_input_{0x00};
99};
100
103
104} // namespace esphome::mpr121
105
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:144
virtual void process(uint16_t data)=0
void set_touch_threshold(uint8_t touch_threshold)
Definition mpr121.h:66
uint8_t gpio_enable_
The enable mask - zero means high Z, 1 means GPIO usage.
Definition mpr121.h:92
void set_release_debounce(uint8_t debounce)
Definition mpr121.cpp:63
float get_setup_priority() const override
Definition mpr121.h:72
uint8_t gpio_direction_
Mask for the pin mode - 1 means output, 0 means input.
Definition mpr121.h:94
std::vector< MPR121Channel * > channels_
Definition mpr121.h:83
uint8_t gpio_output_
The mask to write as output state - 1 means HIGH, 0 means LOW.
Definition mpr121.h:96
bool digital_read(uint8_t pin)
Definition mpr121.cpp:83
void pin_mode(uint8_t pin, gpio::Flags flags)
Definition mpr121.cpp:95
uint8_t gpio_input_
The mask to read as input state - 1 means HIGH, 0 means LOW.
Definition mpr121.h:98
void set_max_touch_channel(uint8_t max_touch_channel)
Definition mpr121.h:75
void set_release_threshold(uint8_t release_threshold)
Definition mpr121.h:67
uint8_t get_touch_threshold() const
Definition mpr121.h:68
void digital_write(uint8_t pin, bool value)
Definition mpr121.cpp:85
void set_touch_debounce(uint8_t debounce)
Definition mpr121.cpp:57
uint8_t get_release_threshold() const
Definition mpr121.h:69
void register_channel(MPR121Channel *channel)
Definition mpr121.h:63
uint16_t flags
ESPHOME_EXPANDER_PIN_SUMMARY_DECL(esphome::mpr121::MPR121Component)
@ MPR121_AUTOCONFIG0
Definition mpr121.h:39
@ MPR121_CHARGECURR_0
Definition mpr121.h:36
@ MPR121_GPIOTOGGLE
Definition mpr121.h:51
@ MPR121_CHARGETIME_1
Definition mpr121.h:37
@ MPR121_TOUCHSTATUS_H
Definition mpr121.h:16
@ MPR121_FILTDATA_0L
Definition mpr121.h:17
@ MPR121_RELEASETH_0
Definition mpr121.h:32
@ MPR121_AUTOCONFIG1
Definition mpr121.h:40
@ MPR121_TARGETLIMIT
Definition mpr121.h:43
@ MPR121_FILTDATA_0H
Definition mpr121.h:18
@ MPR121_TOUCHSTATUS_L
Definition mpr121.h:15
@ MPR121_BASELINE_0
Definition mpr121.h:19
constexpr float IO
For components that represent GPIO pins like PCF8573.
Definition component.h:41