#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include <stdio.h>
#include <DHT.h>
#define DHTTYPE DHT22
#define DHTPIN 34
DHT dht(DHTPIN, DHTTYPE);
// Estrutura para armazenar os dados do sensor DHT22
typedef struct {
float temperatura;
float umidade;
} DHT22_Data;
// Tarefa que lê os dados do sensor DHT11
void Task_ReadDHT22(void *pvParameters) {
DHT22_Data *data = (DHT22_Data *) pvParameters; // Recebe a estrutura como parâmetro
while(1) {
data->umidade = dht.readHumidity();
data->temperatura = dht.readTemperature();
printf("Valores armazenados com sucesso!");
vTaskDelay(pdMS_TO_TICKS(2000)); // Aguarda 2 segundos
}
}
// Tarefa que processa os dados do sensor (ou envia para outro lugar)
void Task_ProcessData(void *pvParameters) {
DHT22_Data *data = (DHT22_Data *) pvParameters; // Recebe a estrutura como parâmetro
while(1) {
// Aqui você pode processar os dados ou enviar para outro lugar
printf("Processando: Temp = %.1f, Umidade = %.1f\n", data->temperatura, data->umidade);
vTaskDelay(pdMS_TO_TICKS(3000)); // Aguarda 3 segundos
}
}
void app_main() {
// Aloca memória para os dados do sensor
static DHT22_Data sensorData;
dht.begin();
// Cria as tarefas
xTaskCreate(Task_ReadDHT22, "ReadDHT22", 2048, (void *) &sensorData, 1, NULL);
xTaskCreate(Task_ProcessData, "ProcessData", 2048, (void *) &sensorData, 1, NULL);
}