ESPHome 2026.5.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
8
9#include <vector>
10
11namespace esphome::mpr121 {
12
13enum {
37 MPR121_ECR = 0x5E,
52};
53
55 public:
56 virtual void setup() = 0;
57 virtual void process(uint16_t data) = 0;
58};
59
61 public:
62 void register_channel(MPR121Channel *channel) { this->channels_.push_back(channel); }
63 void set_touch_debounce(uint8_t debounce);
64 void set_release_debounce(uint8_t debounce);
65 void set_touch_threshold(uint8_t touch_threshold) { this->touch_threshold_ = touch_threshold; };
66 void set_release_threshold(uint8_t release_threshold) { this->release_threshold_ = release_threshold; };
67 uint8_t get_touch_threshold() const { return this->touch_threshold_; };
68 uint8_t get_release_threshold() const { return this->release_threshold_; };
69 void setup() override;
70 void dump_config() override;
71 float get_setup_priority() const override { return setup_priority::IO; }
72 void loop() override;
73
74 void set_max_touch_channel(uint8_t max_touch_channel) { this->max_touch_channel_ = max_touch_channel; }
75
76 // GPIO helper functions.
77 bool digital_read(uint8_t ionum);
78 void digital_write(uint8_t ionum, bool value);
79 void pin_mode(uint8_t ionum, gpio::Flags flags);
80
81 protected:
82 std::vector<MPR121Channel *> channels_{};
83 uint8_t debounce_{0};
87 enum ErrorCode {
88 NONE = 0,
90 } error_code_{NONE};
91
92 bool flush_gpio_();
93
95 uint8_t gpio_enable_{0x00};
97 uint8_t gpio_direction_{0x00};
99 uint8_t gpio_output_{0x00};
101 uint8_t gpio_input_{0x00};
102};
103
105class MPR121GPIOPin : public GPIOPin {
106 public:
107 void setup() override;
108 void pin_mode(gpio::Flags flags) override;
109 bool digital_read() override;
110 void digital_write(bool value) override;
111 size_t dump_summary(char *buffer, size_t len) const override;
112
113 void set_parent(MPR121Component *parent) { this->parent_ = parent; }
114 void set_pin(uint8_t pin) { this->pin_ = pin; }
115 void set_inverted(bool inverted) { this->inverted_ = inverted; }
117
118 gpio::Flags get_flags() const override { return this->flags_; }
119
120 protected:
122 uint8_t pin_;
125};
126
127} // namespace esphome::mpr121
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:132
virtual void process(uint16_t data)=0
void set_touch_threshold(uint8_t touch_threshold)
Definition mpr121.h:65
uint8_t gpio_enable_
The enable mask - zero means high Z, 1 means GPIO usage.
Definition mpr121.h:95
bool digital_read(uint8_t ionum)
Definition mpr121.cpp:97
void set_release_debounce(uint8_t debounce)
Definition mpr121.cpp:64
float get_setup_priority() const override
Definition mpr121.h:71
uint8_t gpio_direction_
Mask for the pin mode - 1 means output, 0 means input.
Definition mpr121.h:97
std::vector< MPR121Channel * > channels_
Definition mpr121.h:82
uint8_t gpio_output_
The mask to write as output state - 1 means HIGH, 0 means LOW.
Definition mpr121.h:99
enum esphome::mpr121::MPR121Component::ErrorCode NONE
void digital_write(uint8_t ionum, bool value)
Definition mpr121.cpp:99
void pin_mode(uint8_t ionum, gpio::Flags flags)
Definition mpr121.cpp:108
uint8_t gpio_input_
The mask to read as input state - 1 means HIGH, 0 means LOW.
Definition mpr121.h:101
void set_max_touch_channel(uint8_t max_touch_channel)
Definition mpr121.h:74
void set_release_threshold(uint8_t release_threshold)
Definition mpr121.h:66
uint8_t get_touch_threshold() const
Definition mpr121.h:67
void set_touch_debounce(uint8_t debounce)
Definition mpr121.cpp:58
uint8_t get_release_threshold() const
Definition mpr121.h:68
void register_channel(MPR121Channel *channel)
Definition mpr121.h:62
Helper class to expose a MPR121 pin as an internal input GPIO pin.
Definition mpr121.h:105
void digital_write(bool value) override
Definition mpr121.cpp:150
void set_flags(gpio::Flags flags)
Definition mpr121.h:116
void set_pin(uint8_t pin)
Definition mpr121.h:114
gpio::Flags get_flags() const override
Definition mpr121.h:118
void pin_mode(gpio::Flags flags) override
Definition mpr121.cpp:140
void set_inverted(bool inverted)
Definition mpr121.h:115
size_t dump_summary(char *buffer, size_t len) const override
Definition mpr121.cpp:155
void set_parent(MPR121Component *parent)
Definition mpr121.h:113
MPR121Component * parent_
Definition mpr121.h:121
bool digital_read() override
Definition mpr121.cpp:145
uint16_t flags
@ MPR121_AUTOCONFIG0
Definition mpr121.h:38
@ MPR121_CHARGECURR_0
Definition mpr121.h:35
@ MPR121_GPIOTOGGLE
Definition mpr121.h:50
@ MPR121_CHARGETIME_1
Definition mpr121.h:36
@ MPR121_TOUCHSTATUS_H
Definition mpr121.h:15
@ MPR121_FILTDATA_0L
Definition mpr121.h:16
@ MPR121_RELEASETH_0
Definition mpr121.h:31
@ MPR121_AUTOCONFIG1
Definition mpr121.h:39
@ MPR121_TARGETLIMIT
Definition mpr121.h:42
@ MPR121_FILTDATA_0H
Definition mpr121.h:17
@ MPR121_TOUCHSTATUS_L
Definition mpr121.h:14
@ MPR121_BASELINE_0
Definition mpr121.h:18
constexpr float IO
For components that represent GPIO pins like PCF8573.
Definition component.h:39
std::string size_t len