mirror of
https://github.com/esphome/esphome.git
synced 2025-10-06 20:03:46 +01:00
fixes
This commit is contained in:
@@ -119,26 +119,12 @@ void ESP32TouchComponent::setup() {
|
|||||||
// Enable touch pad interrupt
|
// Enable touch pad interrupt
|
||||||
touch_pad_intr_enable();
|
touch_pad_intr_enable();
|
||||||
|
|
||||||
// Log which pads are configured and initialize their state
|
// Initialize all sensors as not touched
|
||||||
ESP_LOGI(TAG, "Configured touch pads:");
|
// The ISR will immediately update with actual state
|
||||||
for (auto *child : this->children_) {
|
for (auto *child : this->children_) {
|
||||||
uint32_t value = this->component_touch_pad_read(child->get_touch_pad());
|
// Initialize as not touched
|
||||||
ESP_LOGI(TAG, " Touch Pad %d: threshold=%d, current value=%d", (int) child->get_touch_pad(),
|
child->last_state_ = false;
|
||||||
(int) child->get_threshold(), (int) value);
|
child->publish_initial_state(false);
|
||||||
|
|
||||||
// Initialize the sensor state based on current value
|
|
||||||
#if defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3)
|
|
||||||
bool is_touched = value > child->get_threshold();
|
|
||||||
#else
|
|
||||||
bool is_touched = value < child->get_threshold();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
child->last_state_ = is_touched;
|
|
||||||
child->publish_initial_state(is_touched);
|
|
||||||
|
|
||||||
if (is_touched) {
|
|
||||||
this->last_touch_time_[child->get_touch_pad()] = App.get_loop_component_start_time();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -343,25 +329,6 @@ void ESP32TouchComponent::dump_config() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t ESP32TouchComponent::component_touch_pad_read(touch_pad_t tp) {
|
|
||||||
#if defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3)
|
|
||||||
uint32_t value = 0;
|
|
||||||
if (this->filter_configured_()) {
|
|
||||||
touch_pad_filter_read_smooth(tp, &value);
|
|
||||||
} else {
|
|
||||||
touch_pad_read_raw_data(tp, &value);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
uint16_t value = 0;
|
|
||||||
if (this->iir_filter_enabled_()) {
|
|
||||||
touch_pad_read_filtered(tp, &value);
|
|
||||||
} else {
|
|
||||||
touch_pad_read(tp, &value);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ESP32TouchComponent::loop() {
|
void ESP32TouchComponent::loop() {
|
||||||
const uint32_t now = App.get_loop_component_start_time();
|
const uint32_t now = App.get_loop_component_start_time();
|
||||||
bool should_print = this->setup_mode_ && now - this->setup_mode_last_log_print_ > 250;
|
bool should_print = this->setup_mode_ && now - this->setup_mode_last_log_print_ > 250;
|
||||||
|
Reference in New Issue
Block a user