49 lines
1.3 KiB
C++
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
|