DHT11是温湿度传感器,ESP32可以通过单总线读取DHT11,这里使用ESP32开发板,连接四路DHT11,发现,读值是正常的。程序如下:
dht11_drv.h文件:
#ifndef __DHT11_DRV_H__
#define __DHT11_DRV_H__
#include <stdint.h>
#define DHT11_1_DATA_PINS 33
#define DHT11_2_DATA_PINS 19 //OK
#define DHT11_3_DATA_PINS 25 //OK
#define DHT11_4_DATA_PINS 16
typedef struct
{
uint8_t humi_int; //湿度的整数部分
uint8_t humi_deci; //湿度的小数部分
uint8_t temp_int; //温度的整数部分
uint8_t temp_deci; //温度的小数部分
uint8_t check_sum; //校验和
}DHT11_Data_TypeDef;
void dht11_gpio_init (void);
uint8_t dht11_Read_Data(uint8_t num, uint8_t * temp, uint8_t * humi);
#endif
dht11_drv.c文件: