67 lines
1.6 KiB
C
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
|