#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_err.h"
#include "esp_log.h"
#include "dht.h"
// 定义日志标签
static const char *TAG = "dht22_example";
// 定义DHT22连接的GPIO引脚,对应图中的连接引脚
#define DHT_GPIO_PIN 10
// 定义读取间隔时间(毫秒)
#define READ_INTERVAL_MS 5000
// 全局变量用于存储温湿度数据
static float g_humidity = 0;
static float g_temperature = 0;
// DHT22读取任务函数
void dht22_task(void *pvParameters)
{
while (1)
{
// 读取DHT22传感器的温湿度数据
esp_err_t result = dht_read_float_data(
DHT_TYPE_DHT22, // DHT22传感器类型
(gpio_num_t)DHT_GPIO_PIN, // GPIO引脚
&g_humidity, // 存储湿度值的指针
&g_temperature); // 存储温度值的指针
if (result == ESP_OK) // 读取成功
{
// 打印温度和湿度信息
ESP_LOGI(TAG, "Temperature: %.1f C, Humidity: %.1f %%", g_temperature, g_humidity);
}
else // 读取失败
{
// 打印错误信息
ESP_LOGE(TAG, "Failed to read data: %s", esp_err_to_name(result));
}
// 等待指定时间后再次读取
vTaskDelay(pdMS_TO_TICKS(READ_INTERVAL_MS));
}
}
// 应用程序入口函数
void app_main(void)
{
// 创建DHT22读取任务
xTaskCreate(
dht22_task, // 任务函数
"dht22_task", // 任务名称
4096, // 任务栈大小
NULL, // 传递给任务函数的参数
5, // 任务优先级
NULL // 任务句柄
);
}Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1