Files
esp32-zigbee/main/jsn_sr04_driver.h
T

67 lines
1.6 KiB
C

/* 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