1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-16 10:12:21 +01:00
This commit is contained in:
J. Nick Koston
2025-06-12 15:47:31 -05:00
parent e83f4ae974
commit bbf7d32676

View File

@@ -296,46 +296,48 @@ void ESP32TouchComponent::loop() {
// Find the child for the pad that triggered the interrupt // Find the child for the pad that triggered the interrupt
for (auto *child : this->children_) { for (auto *child : this->children_) {
if (child->get_touch_pad() == event.pad an && d child->last_state_ != is_touch_event) { if (child->get_touch_pad() == event.pad)
// Read current value if (child->last_state_ != is_touch_event) {
uint32_t value = 0; // Read current value
if (this->filter_configured_()) { uint32_t value = 0;
touch_pad_filter_read_smooth(event.pad, &value); if (this->filter_configured_()) {
} else { touch_pad_filter_read_smooth(event.pad, &value);
touch_pad_read_benchmark(event.pad, &value); } else {
touch_pad_read_benchmark(event.pad, &value);
}
child->last_state_ = is_touch_event;
child->publish_state(is_touch_event);
ESP_LOGD(TAG, "Touch Pad '%s' %s (value: %d, threshold: %d)", child->get_name().c_str(),
is_touch_event ? "touched" : "released", value, child->get_threshold());
} }
break;
child->last_state_ = is_touch_event;
child->publish_state(is_touch_event);
ESP_LOGD(TAG, "Touch Pad '%s' %s (value: %d, threshold: %d)", child->get_name().c_str(),
is_touch_event ? "touched" : "released", value, child->get_threshold());
break;
}
} }
} }
} }
}
// In setup mode, periodically log all pad values // In setup mode, periodically log all pad values
if (this->setup_mode_ && now - this->setup_mode_last_log_print_ > SETUP_MODE_LOG_INTERVAL_MS) { if (this->setup_mode_ && now - this->setup_mode_last_log_print_ > SETUP_MODE_LOG_INTERVAL_MS) {
for (auto *child : this->children_) { for (auto *child : this->children_) {
uint32_t raw = 0; uint32_t raw = 0;
uint32_t benchmark = 0; uint32_t benchmark = 0;
uint32_t smooth = 0; uint32_t smooth = 0;
touch_pad_read_raw_data(child->get_touch_pad(), &raw); touch_pad_read_raw_data(child->get_touch_pad(), &raw);
touch_pad_read_benchmark(child->get_touch_pad(), &benchmark); touch_pad_read_benchmark(child->get_touch_pad(), &benchmark);
if (this->filter_configured_()) { if (this->filter_configured_()) {
touch_pad_filter_read_smooth(child->get_touch_pad(), &smooth); touch_pad_filter_read_smooth(child->get_touch_pad(), &smooth);
ESP_LOGD(TAG, " Pad T%d: raw=%d, benchmark=%d, smooth=%d, threshold=%d", child->get_touch_pad(), raw, ESP_LOGD(TAG, " Pad T%d: raw=%d, benchmark=%d, smooth=%d, threshold=%d", child->get_touch_pad(), raw, benchmark,
benchmark, smooth, child->get_threshold()); smooth, child->get_threshold());
} else { } else {
ESP_LOGD(TAG, " Pad T%d: raw=%d, benchmark=%d, threshold=%d", child->get_touch_pad(), raw, benchmark, ESP_LOGD(TAG, " Pad T%d: raw=%d, benchmark=%d, threshold=%d", child->get_touch_pad(), raw, benchmark,
child->get_threshold()); child->get_threshold());
}
} }
this->setup_mode_last_log_print_ = now;
} }
this->setup_mode_last_log_print_ = now;
}
} }
void ESP32TouchComponent::on_shutdown() { void ESP32TouchComponent::on_shutdown() {