/* JSN-SR04T Ultrasonic Distance Sensor Driver */ #pragma once #include "esp_err.h" #include "driver/gpio.h" #ifdef __cplusplus extern "C" { #endif /** * @brief Configuração do sensor JSN-SR04T */ typedef struct { gpio_num_t trigger_gpio; /* GPIO para pino TRIGGER */ gpio_num_t echo_gpio; /* GPIO para pino ECHO */ uint32_t max_distance_cm; /* Distância máxima em cm (padrão: 400) */ uint32_t timeout_us; /* Timeout em microsegundos */ } jsn_sr04_config_t; /** * @brief Leitura do sensor */ typedef struct { float distance_cm; /* Distância medida em centímetros */ uint32_t echo_time_us; /* Tempo do pulso echo em microsegundos */ bool valid; /* Indica se a leitura é válida */ } jsn_sr04_reading_t; /** * @brief Inicializa o sensor JSN-SR04T * * @param config Configuração do sensor * @return ESP_OK em caso de sucesso */ esp_err_t jsn_sr04_init(const jsn_sr04_config_t *config); /** * @brief Lê a distância do sensor * * @param reading Ponteiro para estrutura que receberá os dados * @return ESP_OK em caso de sucesso, ESP_ERR_TIMEOUT se não houver resposta * * @note Aguarda pelo menos 60ms entre leituras para melhor precisão */ esp_err_t jsn_sr04_read(jsn_sr04_reading_t *reading); /** * @brief Obtém apenas a distância em cm * * @param distance_cm Ponteiro para receber distância * @return ESP_OK em caso de sucesso */ esp_err_t jsn_sr04_get_distance(float *distance_cm); /** * @brief Desabilita o sensor e libera recursos * * @return ESP_OK em caso de sucesso */ esp_err_t jsn_sr04_deinit(void); #ifdef __cplusplus } #endif