//*************************************************************************************
//* Atividade leitura sensor humidade/temperatura ht22 + sensor de proximidade
//* André Penha Soares Silva
//* Matrícula: 20212EE0013
//*************************************************************************************
//faz a leitura do sensor de humidade/temperatura e grava em variaveis globais
//escreve as leitura de humidade/temperatura no LCD
//Biblioteca do Arduino
#include <Arduino.h>
//Bibliotecas FreeRTOS
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
//do sensor de humidade/temperatura
#include <DHT.h>
#define DHT_SENSOR_PIN 32 // ESP32 pin GPIO21 conectado no sensor DHT22
#define DHT_SENSOR_TYPE DHT22
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
// Variáveis para armazenamento do handle das tasks
TaskHandle_t taks1Handle = NULL; //tarefa leitura sensor humidade/temp.
TaskHandle_t taks2Handle = NULL; //tarefa que escreve no LCD
//protítipos das Tasks
void vTask1(void *pvParameters);
void vTask2(void *pvParameters);
DHT dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE);
void setup() {
Serial.begin(115200);
dht_sensor.begin(); // initializa o DHT22 sensor
//criação das tasks
xTaskCreate(vTask1,"TASK1",configMINIMAL_STACK_SIZE+1024,NULL,3,&taks1Handle);
xTaskCreate(vTask2,"TASK2",configMINIMAL_STACK_SIZE+1024,NULL,2,&taks2Handle);
//configurando o lcd
Wire.begin(18, 19);
lcd.init();
lcd.backlight();
}
//função loop (vazia)
void loop() {
}
//variaveis globais para o sensor de humidade/temperatura
float humi, tempC;
//vTask1 - leitura do sensor de humidade/temperatura
void vTask1(void *pvParameters)
{
while (1)
{
// leitura do sensor de humidade
humi = dht_sensor.readHumidity();
// leitura da temperatura em graus Celsius
tempC = dht_sensor.readTemperature();
//periodo de leitura do sensor de 250ms
vTaskDelay(pdMS_TO_TICKS(50));
}
}
//vTask2 - escreve no LCD
void vTask2(void *pvParameters)
{
while (1)
{
if ( isnan(tempC) || isnan(humi)) {
Serial.println("Falha na leitura do sensor DHT22!");
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(tempC);
lcd.print(" o C");
lcd.setCursor(0, 1);
lcd.print(humi);
lcd.print(" %");
}
vTaskDelay(pdMS_TO_TICKS(100));
}
}