Files
xInfo/main/Dht11Driver.h
T
2026-08-31 15:05:13 +08:00

49 lines
1.3 KiB
C++

/**
* @file Dht11Driver.h
* @brief DHT11 温湿度传感器驱动封装。
*
* 基于 esp-idf-lib 的 dht 组件,专门设计了防堵塞和失败反馈机制,
* 在读取失败或未连接传感器时安全退回 NAN。
*/
#ifndef DHT11_DRIVER_H
#define DHT11_DRIVER_H
#include "driver/gpio.h"
#include <cmath>
class Dht11Driver {
public:
/**
* @brief 构造函数
* @param pin DHT11 的数据引脚
*/
Dht11Driver(gpio_num_t pin);
~Dht11Driver();
/**
* @brief 初始化硬件和引脚状态
*/
void init();
/**
* @brief 读取环境温度和相对湿度
*
* 内部使用 esp-idf-lib 的 dht_read_float_data() 读取。
* 如果采样间隔过短(小于 2 秒),将返回上一次的缓存结果。
*
* @param [out] temperature 存放产出的温度(℃),失败为 NAN
* @param [out] humidity 存放产出的湿度(%RH),失败为 NAN
* @return true 成功读取有效数据(或返回缓存数据)
* @return false 读取失败(比如未接传感器,或时序错乱),此时 temperature 和 humidity 为 NAN
*/
bool read(float& temperature, float& humidity);
private:
gpio_num_t pin_;
float lastTemperature_;
float lastHumidity_;
int64_t lastReadTimeUs_;
};
#endif // DHT11_DRIVER_H